[MSV1_0] Implement LsaApCallPackageUntrusted()
authorEric Kohl <eric.kohl@reactos.org>
Tue, 17 Sep 2019 10:46:49 +0000 (12:46 +0200)
committerEric Kohl <eric.kohl@reactos.org>
Tue, 17 Sep 2019 10:46:49 +0000 (12:46 +0200)
An untrusted client is only allowed to change passwords

dll/win32/msv1_0/msv1_0.c

index cbe5ec6..39360ca 100644 (file)
@@ -1014,7 +1014,7 @@ LsaApCallPackagePassthrough(IN PLSA_CLIENT_REQUEST ClientRequest,
 
 
 /*
- * @unimplemented
+ * @implemented
  */
 NTSTATUS
 NTAPI
@@ -1026,8 +1026,31 @@ LsaApCallPackageUntrusted(IN PLSA_CLIENT_REQUEST ClientRequest,
                           OUT PULONG ReturnBufferLength,
                           OUT PNTSTATUS ProtocolStatus)
 {
+    ULONG MessageType;
+    NTSTATUS Status;
+
     TRACE("LsaApCallPackageUntrusted()\n");
-    return STATUS_NOT_IMPLEMENTED;
+
+    if (SubmitBufferLength < sizeof(MSV1_0_PROTOCOL_MESSAGE_TYPE))
+        return STATUS_INVALID_PARAMETER;
+
+    MessageType = (ULONG)*((PMSV1_0_PROTOCOL_MESSAGE_TYPE)ProtocolSubmitBuffer);
+
+    *ProtocolReturnBuffer = NULL;
+    *ReturnBufferLength = 0;
+
+    if (MessageType == MsV1_0ChangePassword)
+        Status = MsvpChangePassword(ClientRequest,
+                                    ProtocolSubmitBuffer,
+                                    ClientBufferBase,
+                                    SubmitBufferLength,
+                                    ProtocolReturnBuffer,
+                                    ReturnBufferLength,
+                                    ProtocolStatus);
+    else
+        Status = STATUS_ACCESS_DENIED;
+
+    return Status;
 }