[ros-diffs] [ekohl] 16309: Implement private object security functions.

ekohl at svn.reactos.com ekohl at svn.reactos.com
Tue Jun 28 00:42:32 CEST 2005


Implement private object security functions.
Modified: trunk/reactos/lib/advapi32/advapi32.def
Modified: trunk/reactos/lib/advapi32/sec/misc.c
  _____  

Modified: trunk/reactos/lib/advapi32/advapi32.def
--- trunk/reactos/lib/advapi32/advapi32.def	2005-06-27 21:11:29 UTC
(rev 16308)
+++ trunk/reactos/lib/advapi32/advapi32.def	2005-06-27 22:42:28 UTC
(rev 16309)
@@ -98,7 +98,7 @@

 ;ConvertToAutoInheritPrivateObjectSecurity at 24
 CopySid at 12
 ;CreateCodeAuthzLevel at 20
-;CreatePrivateObjectSecurity at 24
+CreatePrivateObjectSecurity at 24
 ;CreatePrivateObjectSecurityEx at 32
 ;CreatePrivateObjectSecurityWithMultipleInheritance at 36
 CreateProcessAsUserA at 44
@@ -183,7 +183,7 @@
 DeleteAce at 8
 DeleteService at 4
 DeregisterEventSource at 4
-;DestroyPrivateObjectSecurity at 4
+DestroyPrivateObjectSecurity at 4
 ;DuplicateEncryptionInfoFile
 DuplicateToken at 12
 DuplicateTokenEx at 24
@@ -267,7 +267,7 @@
 GetNumberOfEventLogRecords at 8
 GetOldestEventLogRecord at 8
 ;GetOverlappedAccessResults
-;GetPrivateObjectSecurity at 20
+GetPrivateObjectSecurity at 20
 GetSecurityDescriptorControl at 12
 GetSecurityDescriptorDacl at 16
 GetSecurityDescriptorGroup at 12
@@ -563,7 +563,7 @@
 ;SetNamedSecurityInfoExA
 ;SetNamedSecurityInfoExW
 SetNamedSecurityInfoW at 28
-;SetPrivateObjectSecurity at 20
+SetPrivateObjectSecurity at 20
 ;SetPrivateObjectSecurityEx
 SetSecurityDescriptorControl at 12
 SetSecurityDescriptorDacl at 16
  _____  

Modified: trunk/reactos/lib/advapi32/sec/misc.c
--- trunk/reactos/lib/advapi32/sec/misc.c	2005-06-27 21:11:29 UTC
(rev 16308)
+++ trunk/reactos/lib/advapi32/sec/misc.c	2005-06-27 22:42:28 UTC
(rev 16309)
@@ -1,5 +1,4 @@

-/* $Id$
- *
+/*
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS system libraries
  * FILE:            lib/advapi32/sec/misc.c
@@ -1264,4 +1263,106 @@
   return TRUE;
 }
 
+
+/*
+ * @implemented
+ */
+BOOL STDCALL
+CreatePrivateObjectSecurity(PSECURITY_DESCRIPTOR ParentDescriptor,
+                            PSECURITY_DESCRIPTOR CreatorDescriptor,
+                            PSECURITY_DESCRIPTOR *NewDescriptor,
+                            BOOL IsDirectoryObject,
+                            HANDLE Token,
+                            PGENERIC_MAPPING GenericMapping)
+{
+    NTSTATUS Status;
+
+    Status = RtlNewSecurityObject(ParentDescriptor,
+                                  CreatorDescriptor,
+                                  NewDescriptor,
+                                  IsDirectoryObject,
+                                  Token,
+                                  GenericMapping);
+    if (!NT_SUCCESS(Status))
+    {
+        SetLastError(RtlNtStatusToDosError(Status));
+        return FALSE;
+    }
+
+    return TRUE;
+}
+
+
+/*
+ * @implemented
+ */
+BOOL STDCALL
+DestroyPrivateObjectSecurity(PSECURITY_DESCRIPTOR *ObjectDescriptor)
+{
+    NTSTATUS Status;
+
+    Status = RtlDeleteSecurityObject(ObjectDescriptor);
+    if (!NT_SUCCESS(Status))
+    {
+        SetLastError(RtlNtStatusToDosError(Status));
+        return FALSE;
+    }
+
+    return TRUE;
+}
+
+
+/*
+ * @implemented
+ */
+BOOL STDCALL
+GetPrivateObjectSecurity(PSECURITY_DESCRIPTOR ObjectDescriptor,
+                         SECURITY_INFORMATION SecurityInformation,
+                         PSECURITY_DESCRIPTOR ResultantDescriptor,
+                         DWORD DescriptorLength,
+                         PDWORD ReturnLength)
+{
+    NTSTATUS Status;
+
+    Status = RtlQuerySecurityObject(ObjectDescriptor,
+                                    SecurityInformation,
+                                    ResultantDescriptor,
+                                    DescriptorLength,
+                                    ReturnLength);
+    if (!NT_SUCCESS(Status))
+    {
+        SetLastError(RtlNtStatusToDosError(Status));
+        return FALSE;
+    }
+
+    return TRUE;
+}
+
+
+/*
+ * @implemented
+ */
+BOOL STDCALL
+SetPrivateObjectSecurity(SECURITY_INFORMATION SecurityInformation,
+                         PSECURITY_DESCRIPTOR ModificationDescriptor,
+                         PSECURITY_DESCRIPTOR
*ObjectsSecurityDescriptor,
+                         PGENERIC_MAPPING GenericMapping,
+                         HANDLE Token)
+{
+    NTSTATUS Status;
+
+    Status = RtlSetSecurityObject(SecurityInformation,
+                                  ModificationDescriptor,
+                                  ObjectsSecurityDescriptor,
+                                  GenericMapping,
+                                  Token);
+    if (!NT_SUCCESS(Status))
+    {
+        SetLastError(RtlNtStatusToDosError(Status));
+        return FALSE;
+    }
+
+    return TRUE;
+}
+
 /* EOF */
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.reactos.org/pipermail/ros-diffs/attachments/20050628/94a29e3a/attachment.html


More information about the Ros-diffs mailing list