Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#include "precomp.h"
#include <sddl.h>
#include "ssdlhelper.h"
SDDL sddl_wrapper;
SDDL::function_type SDDL::GetFunction(void) { function_type return_function = DummyConvertStringSecurityDescriptorToSecurityDescriptor; if (lock_.acquire()) { return_function = current_function_; if (current_function_==0) { HMODULE advapi = LoadLibrary(L"advapi32.dll"); if (advapi) { current_function_ = (function_type)GetProcAddress(advapi,"ConvertStringSecurityDescriptorToSecurityDescriptorW"); FreeLibrary(advapi); }
if (current_function_==0) { current_function_ = DummyConvertStringSecurityDescriptorToSecurityDescriptor; }
return_function = current_function_; } lock_.release(); }; return return_function; };
BOOL SDDL::ConvertStringSecurityDescriptorToSecurityDescriptor( LPCTSTR StringSecurityDescriptor, // security descriptor string
DWORD StringSDRevision, // revision level
PSECURITY_DESCRIPTOR *SecurityDescriptor, // SD
PULONG SecurityDescriptorSize // SD size
) { return (sddl_wrapper.GetFunction())(StringSecurityDescriptor, StringSDRevision, SecurityDescriptor, SecurityDescriptorSize); };
BOOL SDDL::DummyConvertStringSecurityDescriptorToSecurityDescriptor( LPCTSTR StringSecurityDescriptor, // security descriptor string
DWORD StringSDRevision, // revision level
PSECURITY_DESCRIPTOR *SecurityDescriptor, // SD
PULONG SecurityDescriptorSize // SD size
) { if (SecurityDescriptor==0) return ERROR_INVALID_PARAMETER; if (SecurityDescriptorSize) *SecurityDescriptorSize = 0; *SecurityDescriptor = 0; return TRUE; };
bool SDDL::hasSDDLSupport() { return sddl_wrapper.GetFunction() != DummyConvertStringSecurityDescriptorToSecurityDescriptor; }
|