mirror of
https://github.com/reactos/reactos.git
synced 2024-10-06 17:35:07 +00:00
[ADVAPI32]
LookupAccountSidA: - Change variable prefixes according to the variable type. - Initialize Unicode strings after the call to LookupAccountSidW because the string length is not set properly otherwise. svn path=/trunk/; revision=48121
This commit is contained in:
parent
4ea3ee5cd7
commit
d4353528e6
|
@ -906,51 +906,49 @@ LookupAccountSidA(LPCSTR lpSystemName,
|
||||||
PSID_NAME_USE peUse)
|
PSID_NAME_USE peUse)
|
||||||
{
|
{
|
||||||
UNICODE_STRING NameW, ReferencedDomainNameW, SystemNameW;
|
UNICODE_STRING NameW, ReferencedDomainNameW, SystemNameW;
|
||||||
DWORD szName, szReferencedDomainName;
|
LPWSTR NameBuffer = NULL;
|
||||||
|
LPWSTR ReferencedDomainNameBuffer = NULL;
|
||||||
|
DWORD dwName, dwReferencedDomainName;
|
||||||
BOOL Ret;
|
BOOL Ret;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* save the buffer sizes the caller passed to us, as they may get modified and
|
* save the buffer sizes the caller passed to us, as they may get modified and
|
||||||
* we require the original values when converting back to ansi
|
* we require the original values when converting back to ansi
|
||||||
*/
|
*/
|
||||||
szName = *cchName;
|
dwName = *cchName;
|
||||||
szReferencedDomainName = *cchReferencedDomainName;
|
dwReferencedDomainName = *cchReferencedDomainName;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* allocate buffers for the unicode strings to receive
|
* allocate buffers for the unicode strings to receive
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if(szName > 0)
|
if(dwName > 0)
|
||||||
{
|
{
|
||||||
NameW.Length = 0;
|
NameBuffer = (PWSTR)LocalAlloc(LMEM_FIXED, dwName);
|
||||||
NameW.MaximumLength = szName * sizeof(WCHAR);
|
if(NameBuffer == NULL)
|
||||||
NameW.Buffer = (PWSTR)LocalAlloc(LMEM_FIXED, NameW.MaximumLength);
|
|
||||||
if(NameW.Buffer == NULL)
|
|
||||||
{
|
{
|
||||||
SetLastError(ERROR_OUTOFMEMORY);
|
SetLastError(ERROR_OUTOFMEMORY);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
NameW.Buffer = NULL;
|
NameBuffer = NULL;
|
||||||
|
|
||||||
if(szReferencedDomainName > 0)
|
if(dwReferencedDomainName > 0)
|
||||||
{
|
{
|
||||||
ReferencedDomainNameW.Length = 0;
|
ReferencedDomainNameBuffer = (PWSTR)LocalAlloc(LMEM_FIXED, dwReferencedDomainName);
|
||||||
ReferencedDomainNameW.MaximumLength = szReferencedDomainName * sizeof(WCHAR);
|
if(ReferencedDomainNameBuffer == NULL)
|
||||||
ReferencedDomainNameW.Buffer = (PWSTR)LocalAlloc(LMEM_FIXED, ReferencedDomainNameW.MaximumLength);
|
|
||||||
if(ReferencedDomainNameW.Buffer == NULL)
|
|
||||||
{
|
{
|
||||||
if(szName > 0)
|
if(dwName > 0)
|
||||||
{
|
{
|
||||||
LocalFree(NameW.Buffer);
|
LocalFree(NameBuffer);
|
||||||
}
|
}
|
||||||
SetLastError(ERROR_OUTOFMEMORY);
|
SetLastError(ERROR_OUTOFMEMORY);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
ReferencedDomainNameW.Buffer = NULL;
|
ReferencedDomainNameBuffer = NULL;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* convert the system name to unicode - if present
|
* convert the system name to unicode - if present
|
||||||
|
@ -972,9 +970,9 @@ LookupAccountSidA(LPCSTR lpSystemName,
|
||||||
|
|
||||||
Ret = LookupAccountSidW(SystemNameW.Buffer,
|
Ret = LookupAccountSidW(SystemNameW.Buffer,
|
||||||
lpSid,
|
lpSid,
|
||||||
NameW.Buffer,
|
NameBuffer,
|
||||||
cchName,
|
cchName,
|
||||||
ReferencedDomainNameW.Buffer,
|
ReferencedDomainNameBuffer,
|
||||||
cchReferencedDomainName,
|
cchReferencedDomainName,
|
||||||
peUse);
|
peUse);
|
||||||
if(Ret)
|
if(Ret)
|
||||||
|
@ -989,9 +987,10 @@ LookupAccountSidA(LPCSTR lpSystemName,
|
||||||
ANSI_STRING NameA;
|
ANSI_STRING NameA;
|
||||||
|
|
||||||
NameA.Length = 0;
|
NameA.Length = 0;
|
||||||
NameA.MaximumLength = ((szName <= 0xFFFF) ? (USHORT)szName : 0xFFFF);
|
NameA.MaximumLength = ((dwName <= 0xFFFF) ? (USHORT)dwName : 0xFFFF);
|
||||||
NameA.Buffer = lpName;
|
NameA.Buffer = lpName;
|
||||||
|
|
||||||
|
RtlInitUnicodeString(&NameW, NameBuffer);
|
||||||
RtlUnicodeStringToAnsiString(&NameA, &NameW, FALSE);
|
RtlUnicodeStringToAnsiString(&NameA, &NameW, FALSE);
|
||||||
NameA.Buffer[NameA.Length] = '\0';
|
NameA.Buffer[NameA.Length] = '\0';
|
||||||
}
|
}
|
||||||
|
@ -1001,10 +1000,11 @@ LookupAccountSidA(LPCSTR lpSystemName,
|
||||||
ANSI_STRING ReferencedDomainNameA;
|
ANSI_STRING ReferencedDomainNameA;
|
||||||
|
|
||||||
ReferencedDomainNameA.Length = 0;
|
ReferencedDomainNameA.Length = 0;
|
||||||
ReferencedDomainNameA.MaximumLength = ((szReferencedDomainName <= 0xFFFF) ?
|
ReferencedDomainNameA.MaximumLength = ((dwReferencedDomainName <= 0xFFFF) ?
|
||||||
(USHORT)szReferencedDomainName : 0xFFFF);
|
(USHORT)dwReferencedDomainName : 0xFFFF);
|
||||||
ReferencedDomainNameA.Buffer = lpReferencedDomainName;
|
ReferencedDomainNameA.Buffer = lpReferencedDomainName;
|
||||||
|
|
||||||
|
RtlInitUnicodeString(&ReferencedDomainNameW, ReferencedDomainNameBuffer);
|
||||||
RtlUnicodeStringToAnsiString(&ReferencedDomainNameA, &ReferencedDomainNameW, FALSE);
|
RtlUnicodeStringToAnsiString(&ReferencedDomainNameA, &ReferencedDomainNameW, FALSE);
|
||||||
ReferencedDomainNameA.Buffer[ReferencedDomainNameA.Length] = '\0';
|
ReferencedDomainNameA.Buffer[ReferencedDomainNameA.Length] = '\0';
|
||||||
}
|
}
|
||||||
|
@ -1018,13 +1018,13 @@ LookupAccountSidA(LPCSTR lpSystemName,
|
||||||
{
|
{
|
||||||
RtlFreeUnicodeString(&SystemNameW);
|
RtlFreeUnicodeString(&SystemNameW);
|
||||||
}
|
}
|
||||||
if(NameW.Buffer != NULL)
|
if(NameBuffer != NULL)
|
||||||
{
|
{
|
||||||
LocalFree(NameW.Buffer);
|
LocalFree(NameBuffer);
|
||||||
}
|
}
|
||||||
if(ReferencedDomainNameW.Buffer != NULL)
|
if(ReferencedDomainNameBuffer != NULL)
|
||||||
{
|
{
|
||||||
LocalFree(ReferencedDomainNameW.Buffer);
|
LocalFree(ReferencedDomainNameBuffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
return Ret;
|
return Ret;
|
||||||
|
|
Loading…
Reference in a new issue