mirror of
https://github.com/reactos/reactos.git
synced 2025-02-24 01:15:09 +00:00
[ADVAPI32]
* Update ConvertSecurityDescriptorToStringSecurityDescriptor{A,W}(). CORE-8540 svn path=/trunk/; revision=65409
This commit is contained in:
parent
c846c8e4a8
commit
bed61d0b02
1 changed files with 28 additions and 29 deletions
|
@ -3061,14 +3061,8 @@ static BOOL DumpSacl(PSECURITY_DESCRIPTOR SecurityDescriptor, WCHAR **pwptr, ULO
|
|||
|
||||
/******************************************************************************
|
||||
* ConvertSecurityDescriptorToStringSecurityDescriptorW [ADVAPI32.@]
|
||||
* @implemented
|
||||
*/
|
||||
BOOL WINAPI
|
||||
ConvertSecurityDescriptorToStringSecurityDescriptorW(PSECURITY_DESCRIPTOR SecurityDescriptor,
|
||||
DWORD SDRevision,
|
||||
SECURITY_INFORMATION SecurityInformation,
|
||||
LPWSTR *OutputString,
|
||||
PULONG OutputLen)
|
||||
BOOL WINAPI ConvertSecurityDescriptorToStringSecurityDescriptorW(PSECURITY_DESCRIPTOR SecurityDescriptor, DWORD SDRevision, SECURITY_INFORMATION RequestedInformation, LPWSTR *OutputString, PULONG OutputLen)
|
||||
{
|
||||
ULONG len;
|
||||
WCHAR *wptr, *wstr;
|
||||
|
@ -3081,35 +3075,45 @@ ConvertSecurityDescriptorToStringSecurityDescriptorW(PSECURITY_DESCRIPTOR Securi
|
|||
}
|
||||
|
||||
len = 0;
|
||||
if (SecurityInformation & OWNER_SECURITY_INFORMATION)
|
||||
if (RequestedInformation & OWNER_SECURITY_INFORMATION)
|
||||
if (!DumpOwner(SecurityDescriptor, NULL, &len))
|
||||
return FALSE;
|
||||
if (SecurityInformation & GROUP_SECURITY_INFORMATION)
|
||||
if (RequestedInformation & GROUP_SECURITY_INFORMATION)
|
||||
if (!DumpGroup(SecurityDescriptor, NULL, &len))
|
||||
return FALSE;
|
||||
if (SecurityInformation & DACL_SECURITY_INFORMATION)
|
||||
if (RequestedInformation & DACL_SECURITY_INFORMATION)
|
||||
if (!DumpDacl(SecurityDescriptor, NULL, &len))
|
||||
return FALSE;
|
||||
if (SecurityInformation & SACL_SECURITY_INFORMATION)
|
||||
if (RequestedInformation & SACL_SECURITY_INFORMATION)
|
||||
if (!DumpSacl(SecurityDescriptor, NULL, &len))
|
||||
return FALSE;
|
||||
|
||||
wstr = wptr = LocalAlloc(0, (len + 1)*sizeof(WCHAR));
|
||||
#ifdef __REACTOS__
|
||||
if (wstr == NULL)
|
||||
return FALSE;
|
||||
|
||||
if (SecurityInformation & OWNER_SECURITY_INFORMATION)
|
||||
if (!DumpOwner(SecurityDescriptor, &wptr, NULL))
|
||||
#endif
|
||||
|
||||
if (RequestedInformation & OWNER_SECURITY_INFORMATION)
|
||||
if (!DumpOwner(SecurityDescriptor, &wptr, NULL)) {
|
||||
LocalFree (wstr);
|
||||
return FALSE;
|
||||
if (SecurityInformation & GROUP_SECURITY_INFORMATION)
|
||||
if (!DumpGroup(SecurityDescriptor, &wptr, NULL))
|
||||
}
|
||||
if (RequestedInformation & GROUP_SECURITY_INFORMATION)
|
||||
if (!DumpGroup(SecurityDescriptor, &wptr, NULL)) {
|
||||
LocalFree (wstr);
|
||||
return FALSE;
|
||||
if (SecurityInformation & DACL_SECURITY_INFORMATION)
|
||||
if (!DumpDacl(SecurityDescriptor, &wptr, NULL))
|
||||
}
|
||||
if (RequestedInformation & DACL_SECURITY_INFORMATION)
|
||||
if (!DumpDacl(SecurityDescriptor, &wptr, NULL)) {
|
||||
LocalFree (wstr);
|
||||
return FALSE;
|
||||
if (SecurityInformation & SACL_SECURITY_INFORMATION)
|
||||
if (!DumpSacl(SecurityDescriptor, &wptr, NULL))
|
||||
}
|
||||
if (RequestedInformation & SACL_SECURITY_INFORMATION)
|
||||
if (!DumpSacl(SecurityDescriptor, &wptr, NULL)) {
|
||||
LocalFree (wstr);
|
||||
return FALSE;
|
||||
}
|
||||
*wptr = 0;
|
||||
|
||||
TRACE("ret: %s, %d\n", wine_dbgstr_w(wstr), len);
|
||||
|
@ -3121,30 +3125,25 @@ ConvertSecurityDescriptorToStringSecurityDescriptorW(PSECURITY_DESCRIPTOR Securi
|
|||
|
||||
/******************************************************************************
|
||||
* ConvertSecurityDescriptorToStringSecurityDescriptorA [ADVAPI32.@]
|
||||
* @implemented
|
||||
*/
|
||||
BOOL WINAPI
|
||||
ConvertSecurityDescriptorToStringSecurityDescriptorA(PSECURITY_DESCRIPTOR SecurityDescriptor,
|
||||
DWORD SDRevision,
|
||||
SECURITY_INFORMATION Information,
|
||||
LPSTR *OutputString,
|
||||
PULONG OutputLen)
|
||||
BOOL WINAPI ConvertSecurityDescriptorToStringSecurityDescriptorA(PSECURITY_DESCRIPTOR SecurityDescriptor, DWORD SDRevision, SECURITY_INFORMATION Information, LPSTR *OutputString, PULONG OutputLen)
|
||||
{
|
||||
LPWSTR wstr;
|
||||
ULONG len;
|
||||
|
||||
if (ConvertSecurityDescriptorToStringSecurityDescriptorW(SecurityDescriptor, SDRevision, Information, &wstr, &len))
|
||||
{
|
||||
int lenA;
|
||||
|
||||
lenA = WideCharToMultiByte(CP_ACP, 0, wstr, len, NULL, 0, NULL, NULL);
|
||||
*OutputString = HeapAlloc(GetProcessHeap(), 0, lenA);
|
||||
*OutputString = heap_alloc(lenA);
|
||||
#ifdef __REACTOS__
|
||||
if (*OutputString == NULL)
|
||||
{
|
||||
LocalFree(wstr);
|
||||
*OutputLen = 0;
|
||||
return FALSE;
|
||||
}
|
||||
#endif
|
||||
WideCharToMultiByte(CP_ACP, 0, wstr, len, *OutputString, lenA, NULL, NULL);
|
||||
LocalFree(wstr);
|
||||
|
||||
|
|
Loading…
Reference in a new issue