[LSASRV][MSV1_0]
[reactos.git] / reactos / dll / win32 / lsasrv / lookup.c
index a05529e..d7f6f2f 100644 (file)
@@ -80,6 +80,7 @@ typedef struct _WELL_KNOWN_SID
 
 
 LIST_ENTRY WellKnownSidListHead;
+PSID LsapLocalSystemSid = NULL;
 
 
 /* FUNCTIONS ***************************************************************/
@@ -90,7 +91,8 @@ LsapCreateSid(PSID_IDENTIFIER_AUTHORITY IdentifierAuthority,
               PULONG SubAuthorities,
               PWSTR AccountName,
               PWSTR DomainName,
-              SID_NAME_USE Use)
+              SID_NAME_USE Use,
+              PSID *SidPtr)
 {
     PWELL_KNOWN_SID SidEntry;
     PULONG p;
@@ -159,6 +161,9 @@ LsapCreateSid(PSID_IDENTIFIER_AUTHORITY IdentifierAuthority,
     InsertTailList(&WellKnownSidListHead,
                    &SidEntry->ListEntry);
 
+    if (SidPtr != NULL)
+        *SidPtr = SidEntry->Sid;
+
     return TRUE;
 }
 
@@ -184,7 +189,8 @@ LsapInitSids(VOID)
                   NULL,
                   szAccountName,
                   szDomainName,
-                  SidTypeDomain);
+                  SidTypeDomain,
+                  NULL);
 
     /* Null Sid */
     LsapLoadString(hInstance, IDS_NULL_RID, szAccountName, 80);
@@ -195,7 +201,8 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   L"",
-                  SidTypeWellKnownGroup);
+                  SidTypeWellKnownGroup,
+                  NULL);
 
     /* World Sid */
     LsapLoadString(hInstance, IDS_WORLD_RID, szAccountName, 80);
@@ -206,7 +213,8 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   L"",
-                  SidTypeWellKnownGroup);
+                  SidTypeWellKnownGroup,
+                  NULL);
 
     /* Local Sid */
     LsapLoadString(hInstance, IDS_LOCAL_RID, szAccountName, 80);
@@ -217,7 +225,8 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   L"",
-                  SidTypeWellKnownGroup);
+                  SidTypeWellKnownGroup,
+                  NULL);
 
     /* Creator Owner Sid */
     LsapLoadString(hInstance, IDS_CREATOR_OWNER_RID, szAccountName, 80);
@@ -228,7 +237,8 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   L"",
-                  SidTypeWellKnownGroup);
+                  SidTypeWellKnownGroup,
+                  NULL);
 
     /* Creator Group Sid */
     LsapLoadString(hInstance, IDS_CREATOR_GROUP_RID, szAccountName, 80);
@@ -239,7 +249,8 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   L"",
-                  SidTypeWellKnownGroup);
+                  SidTypeWellKnownGroup,
+                  NULL);
 
     /* Creator Owner Server Sid */
     LsapLoadString(hInstance, IDS_CREATOR_OWNER_SERVER_RID, szAccountName, 80);
@@ -250,7 +261,8 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   L"",
-                  SidTypeWellKnownGroup);
+                  SidTypeWellKnownGroup,
+                  NULL);
 
     /* Creator Group Server Sid */
     LsapLoadString(hInstance, IDS_CREATOR_GROUP_SERVER_RID, szAccountName, 80);
@@ -261,7 +273,8 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   L"",
-                  SidTypeWellKnownGroup);
+                  SidTypeWellKnownGroup,
+                  NULL);
 
     /* Dialup Sid */
     LsapLoadString(hInstance, IDS_DIALUP_RID, szAccountName, 80);
@@ -273,7 +286,8 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   szDomainName,
-                  SidTypeWellKnownGroup);
+                  SidTypeWellKnownGroup,
+                  NULL);
 
     /* Network Sid */
     LsapLoadString(hInstance, IDS_DIALUP_RID, szAccountName, 80);
@@ -284,7 +298,8 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   szDomainName,
-                  SidTypeWellKnownGroup);
+                  SidTypeWellKnownGroup,
+                  NULL);
 
     /* Batch Sid*/
     LsapLoadString(hInstance, IDS_BATCH_RID, szAccountName, 80);
@@ -295,7 +310,8 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   szDomainName,
-                  SidTypeWellKnownGroup);
+                  SidTypeWellKnownGroup,
+                  NULL);
 
     /* Interactive Sid */
     LsapLoadString(hInstance, IDS_INTERACTIVE_RID, szAccountName, 80);
@@ -306,7 +322,8 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   szDomainName,
-                  SidTypeWellKnownGroup);
+                  SidTypeWellKnownGroup,
+                  NULL);
 
     /* Service Sid */
     LsapLoadString(hInstance, IDS_SERVICE_RID, szAccountName, 80);
@@ -317,7 +334,8 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   szDomainName,
-                  SidTypeWellKnownGroup);
+                  SidTypeWellKnownGroup,
+                  NULL);
 
     /* Anonymous Logon Sid */
     LsapLoadString(hInstance, IDS_ANONYMOUS_LOGON_RID, szAccountName, 80);
@@ -328,7 +346,8 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   szDomainName,
-                  SidTypeWellKnownGroup);
+                  SidTypeWellKnownGroup,
+                  NULL);
 
     /* Proxy Sid */
     LsapLoadString(hInstance, IDS_PROXY_RID, szAccountName, 80);
@@ -339,7 +358,8 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   szDomainName,
-                  SidTypeWellKnownGroup);
+                  SidTypeWellKnownGroup,
+                  NULL);
 
     /* Enterprise Controllers Sid */
     LsapLoadString(hInstance, IDS_ENTERPRISE_CONTROLLERS_RID, szAccountName, 80);
@@ -350,7 +370,8 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   szDomainName,
-                  SidTypeWellKnownGroup);
+                  SidTypeWellKnownGroup,
+                  NULL);
 
     /* Principal Self Sid */
     LsapLoadString(hInstance, IDS_PRINCIPAL_SELF_RID, szAccountName, 80);
@@ -361,7 +382,8 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   szDomainName,
-                  SidTypeWellKnownGroup);
+                  SidTypeWellKnownGroup,
+                  NULL);
 
     /* Authenticated Users Sid */
     LsapLoadString(hInstance, IDS_AUTHENTICATED_USER_RID, szAccountName, 80);
@@ -372,7 +394,8 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   szDomainName,
-                  SidTypeWellKnownGroup);
+                  SidTypeWellKnownGroup,
+                  NULL);
 
     /* Restricted Code Sid */
     LsapLoadString(hInstance, IDS_RESTRICTED_CODE_RID, szAccountName, 80);
@@ -383,7 +406,8 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   szDomainName,
-                  SidTypeWellKnownGroup);
+                  SidTypeWellKnownGroup,
+                  NULL);
 
     /* Terminal Server Sid */
     LsapLoadString(hInstance, IDS_TERMINAL_SERVER_RID, szAccountName, 80);
@@ -394,7 +418,8 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   szDomainName,
-                  SidTypeWellKnownGroup);
+                  SidTypeWellKnownGroup,
+                  NULL);
 
     /* Remote Logon Sid */
     LsapLoadString(hInstance, IDS_REMOTE_LOGON_RID, szAccountName, 80);
@@ -405,7 +430,8 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   szDomainName,
-                  SidTypeWellKnownGroup);
+                  SidTypeWellKnownGroup,
+                  NULL);
 
     /* This Organization Sid */
     LsapLoadString(hInstance, IDS_THIS_ORGANIZATION_RID, szAccountName, 80);
@@ -416,7 +442,8 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   szDomainName,
-                  SidTypeWellKnownGroup);
+                  SidTypeWellKnownGroup,
+                  NULL);
 
     /* Local System Sid */
     LsapLoadString(hInstance, IDS_LOCAL_SYSTEM_RID, szAccountName, 80);
@@ -427,7 +454,8 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   szDomainName,
-                  SidTypeWellKnownGroup);
+                  SidTypeWellKnownGroup,
+                  &LsapLocalSystemSid);
 
     /* Local Service Sid */
     LsapLoadString(hInstance, IDS_LOCAL_SERVICE_RID, szAccountName, 80);
@@ -438,14 +466,16 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   szDomainName,
-                  SidTypeWellKnownGroup);
+                  SidTypeWellKnownGroup,
+                  NULL);
 
     LsapCreateSid(&NtAuthority,
                   1,
                   SubAuthorities,
                   L"LOCALSERVICE",
                   L"NT AUTHORITY",
-                  SidTypeWellKnownGroup);
+                  SidTypeWellKnownGroup,
+                  NULL);
 
     /* Network Service Sid */
     LsapLoadString(hInstance, IDS_NETWORK_SERVICE_RID, szAccountName, 80);
@@ -456,14 +486,16 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   szDomainName,
-                  SidTypeWellKnownGroup);
+                  SidTypeWellKnownGroup,
+                  NULL);
 
     LsapCreateSid(&NtAuthority,
                   1,
                   SubAuthorities,
                   L"NETWORKSERVICE",
                   L"NT AUTHORITY",
-                  SidTypeWellKnownGroup);
+                  SidTypeWellKnownGroup,
+                  NULL);
 
     /* Builtin Domain Sid */
     LsapLoadString(hInstance, IDS_BUILTIN_DOMAIN_RID, szAccountName, 80);
@@ -475,7 +507,8 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   szDomainName,
-                  SidTypeDomain);
+                  SidTypeDomain,
+                  NULL);
 
     /* Administrators Alias Sid */
     LsapLoadString(hInstance, IDS_ALIAS_RID_ADMINS, szAccountName, 80);
@@ -487,7 +520,8 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   szDomainName,
-                  SidTypeAlias);
+                  SidTypeAlias,
+                  NULL);
 
     /* Users Alias Sid */
     LsapLoadString(hInstance, IDS_ALIAS_RID_USERS, szAccountName, 80);
@@ -499,7 +533,8 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   szDomainName,
-                  SidTypeAlias);
+                  SidTypeAlias,
+                  NULL);
 
     /* Guests Alias Sid */
     LsapLoadString(hInstance, IDS_ALIAS_RID_GUESTS, szAccountName, 80);
@@ -511,7 +546,8 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   szDomainName,
-                  SidTypeAlias);
+                  SidTypeAlias,
+                  NULL);
 
     /* Power User Alias Sid */
     LsapLoadString(hInstance, IDS_ALIAS_RID_POWER_USERS, szAccountName, 80);
@@ -523,7 +559,8 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   szDomainName,
-                  SidTypeAlias);
+                  SidTypeAlias,
+                  NULL);
 
     /* Account Operators Alias Sid */
     LsapLoadString(hInstance, IDS_ALIAS_RID_ACCOUNT_OPS, szAccountName, 80);
@@ -535,7 +572,8 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   szDomainName,
-                  SidTypeAlias);
+                  SidTypeAlias,
+                  NULL);
 
     /* System Operators Alias Sid */
     LsapLoadString(hInstance, IDS_ALIAS_RID_SYSTEM_OPS, szAccountName, 80);
@@ -547,7 +585,8 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   szDomainName,
-                  SidTypeAlias);
+                  SidTypeAlias,
+                  NULL);
 
     /* Print Operators Alias Sid */
     LsapLoadString(hInstance, IDS_ALIAS_RID_PRINT_OPS, szAccountName, 80);
@@ -559,7 +598,8 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   szDomainName,
-                  SidTypeAlias);
+                  SidTypeAlias,
+                  NULL);
 
     /* Backup Operators Alias Sid */
     LsapLoadString(hInstance, IDS_ALIAS_RID_BACKUP_OPS, szAccountName, 80);
@@ -571,7 +611,8 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   szDomainName,
-                  SidTypeAlias);
+                  SidTypeAlias,
+                  NULL);
 
     /* Replicators Alias Sid */
     LsapLoadString(hInstance, IDS_ALIAS_RID_REPLICATOR, szAccountName, 80);
@@ -583,7 +624,8 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   szDomainName,
-                  SidTypeAlias);
+                  SidTypeAlias,
+                  NULL);
 
     /* RAS Servers Alias Sid */
     LsapLoadString(hInstance, IDS_ALIAS_RID_RAS_SERVERS, szAccountName, 80);
@@ -595,7 +637,8 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   szDomainName,
-                  SidTypeAlias);
+                  SidTypeAlias,
+                  NULL);
 
     /* Pre-Windows 2000 Compatible Access Alias Sid */
     LsapLoadString(hInstance, IDS_ALIAS_RID_PREW2KCOMPACCESS, szAccountName, 80);
@@ -607,7 +650,8 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   szDomainName,
-                  SidTypeAlias);
+                  SidTypeAlias,
+                  NULL);
 
     /* Remote Desktop Users Alias Sid */
     LsapLoadString(hInstance, IDS_ALIAS_RID_REMOTE_DESKTOP_USERS, szAccountName, 80);
@@ -619,7 +663,8 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   szDomainName,
-                  SidTypeAlias);
+                  SidTypeAlias,
+                  NULL);
 
     /* Network Configuration Operators Alias Sid */
     LsapLoadString(hInstance, IDS_ALIAS_RID_NETWORK_CONFIGURATION_OPS, szAccountName, 80);
@@ -631,7 +676,8 @@ LsapInitSids(VOID)
                   SubAuthorities,
                   szAccountName,
                   szDomainName,
-                  SidTypeAlias);
+                  SidTypeAlias,
+                  NULL);
 
     /* FIXME: Add more well known sids */