[LSASRV]
[reactos.git] / reactos / dll / win32 / lsasrv / authpackage.c
index 8122ad2..071b416 100644 (file)
@@ -32,7 +32,9 @@ typedef PVOID PLSA_CLIENT_REQUEST;
 
 typedef NTSTATUS (NTAPI *PLSA_CREATE_LOGON_SESSION)(PLUID);
 typedef NTSTATUS (NTAPI *PLSA_DELETE_LOGON_SESSION)(PLUID);
-
+typedef NTSTATUS (NTAPI *PLSA_ADD_CREDENTIAL)(PLUID, ULONG, PLSA_STRING, PLSA_STRING);
+typedef NTSTATUS (NTAPI *PLSA_GET_CREDENTIALS)(PLUID, ULONG, PULONG, BOOLEAN, PLSA_STRING, PULONG, PLSA_STRING);
+typedef NTSTATUS (NTAPI *PLSA_DELETE_CREDENTIAL)(PLUID, ULONG, PLSA_STRING);
 typedef PVOID (NTAPI *PLSA_ALLOCATE_LSA_HEAP)(ULONG);
 typedef VOID (NTAPI *PLSA_FREE_LSA_HEAP)(PVOID);
 typedef NTSTATUS (NTAPI *PLSA_ALLOCATE_CLIENT_BUFFER)(PLSA_CLIENT_REQUEST, ULONG, PVOID*);
@@ -46,9 +48,9 @@ typedef struct LSA_DISPATCH_TABLE
 {
     PLSA_CREATE_LOGON_SESSION CreateLogonSession;
     PLSA_DELETE_LOGON_SESSION DeleteLogonSession;
-    PVOID /*PLSA_ADD_CREDENTIAL */ AddCredential;
-    PVOID /*PLSA_GET_CREDENTIALS */ GetCredentials;
-    PVOID /*PLSA_DELETE_CREDENTIAL */ DeleteCredential;
+    PLSA_ADD_CREDENTIAL AddCredential;
+    PLSA_GET_CREDENTIALS GetCredentials;
+    PLSA_DELETE_CREDENTIAL DeleteCredential;
     PLSA_ALLOCATE_LSA_HEAP AllocateLsaHeap;
     PLSA_FREE_LSA_HEAP FreeLsaHeap;
     PLSA_ALLOCATE_CLIENT_BUFFER AllocateClientBuffer;
@@ -481,9 +483,9 @@ LsapInitAuthPackages(VOID)
     /* Initialize the dispatch table */
     DispatchTable.CreateLogonSession = &LsapCreateLogonSession;
     DispatchTable.DeleteLogonSession = &LsapDeleteLogonSession;
-    DispatchTable.AddCredential = NULL;
-    DispatchTable.GetCredentials = NULL;
-    DispatchTable.DeleteCredential = NULL;
+    DispatchTable.AddCredential = &LsapAddCredential;
+    DispatchTable.GetCredentials = &LsapGetCredentials;
+    DispatchTable.DeleteCredential = &LsapDeleteCredential;
     DispatchTable.AllocateLsaHeap = &LsapAllocateHeap;
     DispatchTable.FreeLsaHeap = &LsapFreeHeap;
     DispatchTable.AllocateClientBuffer = &LsapAllocateClientBuffer;
@@ -1029,6 +1031,9 @@ LsapAddSamGroups(
     for (i = 0; i < TokenInfo1->Groups->GroupCount; i++)
         SidArray.Sids[i + 1].SidPointer = TokenInfo1->Groups->Groups[i].Sid;
 
+    BuiltinMembership.Element = NULL;
+    AccountMembership.Element = NULL;
+
     Status = SamIConnect(NULL,
                          &ServerHandle,
                          SAM_SERVER_CONNECT | SAM_SERVER_LOOKUP_DOMAIN,
@@ -1059,7 +1064,6 @@ LsapAddSamGroups(
         goto done;
     }
 
-    BuiltinMembership.Element = NULL;
     Status = SamrGetAliasMembership(BuiltinDomainHandle,
                                     &SidArray,
                                     &BuiltinMembership);
@@ -1069,7 +1073,6 @@ LsapAddSamGroups(
         goto done;
     }
 
-    AccountMembership.Element = NULL;
     Status = SamrGetAliasMembership(AccountDomainHandle,
                                     &SidArray,
                                     &AccountMembership);
@@ -1601,9 +1604,11 @@ LsapLogonUser(PLSA_API_MSG RequestMsg,
         goto done;
     }
 
-    TokenHandle = NULL;
+//    TokenHandle = NULL;
 
-    Status = LsapSetLogonSessionData(&RequestMsg->LogonUser.Reply.LogonId);
+    Status = LsapSetLogonSessionData(&RequestMsg->LogonUser.Reply.LogonId,
+                                     LogonType,
+                                     AccountName);
     if (!NT_SUCCESS(Status))
     {
         ERR("LsapSetLogonSessionData failed (Status 0x%08lx)\n", Status);
@@ -1611,11 +1616,11 @@ LsapLogonUser(PLSA_API_MSG RequestMsg,
     }
 
 done:
-    if (!NT_SUCCESS(Status))
-    {
+//    if (!NT_SUCCESS(Status))
+//    {
         if (TokenHandle != NULL)
             NtClose(TokenHandle);
-    }
+//    }
 
     /* Free the local groups */
     if (LocalGroups != NULL)