don't copy the entire security descriptor to the stack in
SeCaptureSecurityDescriptor() when previous mode is kernel mode and
capturing for kernel mode is undesired
Modified: trunk/reactos/ntoskrnl/se/sd.c
_____
Modified: trunk/reactos/ntoskrnl/se/sd.c
--- trunk/reactos/ntoskrnl/se/sd.c 2005-01-23 23:51:40 UTC (rev
13236)
+++ trunk/reactos/ntoskrnl/se/sd.c 2005-01-24 00:09:04 UTC (rev
13237)
@@ -154,18 +154,22 @@
return Status;
}
}
+ else if(!CaptureIfKernel)
+ {
+ if(OriginalSecurityDescriptor->Revision !=
SECURITY_DESCRIPTOR_REVISION1)
+ {
+ return STATUS_UNKNOWN_REVISION;
+ }
+
+ *CapturedSecurityDescriptor = OriginalSecurityDescriptor;
+ return STATUS_SUCCESS;
+ }
else
{
/* make a copy on the stack */
DescriptorCopy = *OriginalSecurityDescriptor;
}
- if(CurrentMode == KernelMode && !CaptureIfKernel)
- {
- *CapturedSecurityDescriptor = OriginalSecurityDescriptor;
- return STATUS_SUCCESS;
- }
-
if(DescriptorCopy.Revision != SECURITY_DESCRIPTOR_REVISION1)
{
return STATUS_UNKNOWN_REVISION;