From d5027fd3cfb154048c9466cdc4aafb300116e47a Mon Sep 17 00:00:00 2001 From: Mikolaj Zalewski Date: Tue, 25 Sep 2007 13:13:38 -0700 Subject: [PATCH] advapi32: make ConvertSidToStringSid use helper functions of ConvertSecurityDescriptorToStringSecurityDescriptor --- dlls/advapi32/security.c | 34 ++++++++-------------------------- 1 files changed, 8 insertions(+), 26 deletions(-) diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c index f2a10fe..2e68c75 100644 --- a/dlls/advapi32/security.c +++ b/dlls/advapi32/security.c @@ -4000,37 +4000,19 @@ BOOL WINAPI ConvertStringSidToSidA(LPCST */ BOOL WINAPI ConvertSidToStringSidW( PSID pSid, LPWSTR *pstr ) { - DWORD sz, i; - LPWSTR str; - WCHAR fmt[] = { 'S','-','%','u','-','%','d',0 }; - WCHAR subauthfmt[] = { '-','%','u',0 }; - SID* pisid=pSid; + DWORD len = 0; + LPWSTR wstr, wptr; TRACE("%p %p\n", pSid, pstr ); - if( !IsValidSid( pSid ) ) - return FALSE; - - if (pisid->Revision != SDDL_REVISION) - return FALSE; - if (pisid->IdentifierAuthority.Value[0] || - pisid->IdentifierAuthority.Value[1]) - { - FIXME("not matching MS' bugs\n"); + len = 0; + if (!DumpSidNumeric(pSid, NULL, &len)) return FALSE; - } - - sz = 14 + pisid->SubAuthorityCount * 11; - str = LocalAlloc( 0, sz*sizeof(WCHAR) ); - sprintfW( str, fmt, pisid->Revision, MAKELONG( - MAKEWORD( pisid->IdentifierAuthority.Value[5], - pisid->IdentifierAuthority.Value[4] ), - MAKEWORD( pisid->IdentifierAuthority.Value[3], - pisid->IdentifierAuthority.Value[2] ) ) ); - for( i=0; iSubAuthorityCount; i++ ) - sprintfW( str + strlenW(str), subauthfmt, pisid->SubAuthority[i] ); - *pstr = str; + wstr = wptr = LocalAlloc(0, (len+1) * sizeof(WCHAR)); + DumpSidNumeric(pSid, &wptr, NULL); + *wptr = 0; + *pstr = wstr; return TRUE; } -- 1.4.1