mirror of
https://github.com/winfsp/winfsp.git
synced 2025-07-03 09:22:57 -05:00
dotnet: ModifySecurityDescriptorEx
Deprecate ModifySecurityDecriptor and introduce ModifySecurityDescriptorEx. Works around the problem of clobbering an existing security descriptor when the native API FspSetSecurityDescriptor fails.
This commit is contained in:
@ -928,6 +928,26 @@ namespace Fsp.Interop
|
||||
return SecurityDescriptorBytes;
|
||||
}
|
||||
}
|
||||
internal unsafe static Int32 ModifySecurityDescriptorEx(
|
||||
Byte[] SecurityDescriptorBytes,
|
||||
UInt32 SecurityInformation,
|
||||
Byte[] ModificationDescriptorBytes,
|
||||
ref Byte[] ModifiedDescriptorBytes)
|
||||
{
|
||||
fixed (Byte *S = SecurityDescriptorBytes)
|
||||
fixed (Byte *M = ModificationDescriptorBytes)
|
||||
{
|
||||
IntPtr SecurityDescriptor;
|
||||
Int32 Result = FspSetSecurityDescriptor(
|
||||
(IntPtr)S, SecurityInformation, (IntPtr)M, out SecurityDescriptor);
|
||||
if (0 > Result)
|
||||
return Result;
|
||||
SecurityDescriptorBytes = MakeSecurityDescriptor(SecurityDescriptor);
|
||||
FspDeleteSecurityDescriptor(SecurityDescriptor, _FspSetSecurityDescriptorPtr);
|
||||
ModifiedDescriptorBytes = SecurityDescriptorBytes;
|
||||
return 0/*STATUS_SUCCESS*/;
|
||||
}
|
||||
}
|
||||
|
||||
internal unsafe static Int32 CopyReparsePoint(
|
||||
Byte[] ReparseData,
|
||||
|
Reference in New Issue
Block a user