advapi32: Use heap helpers in security code.
This commit is contained in:
parent
334eedb09e
commit
b60a2710f8
|
@ -78,7 +78,7 @@ static void* ADVAPI_GetDomainName(unsigned sz, unsigned ofs)
|
||||||
ret = RegQueryValueExW(key, wg, NULL, NULL, NULL, &size);
|
ret = RegQueryValueExW(key, wg, NULL, NULL, NULL, &size);
|
||||||
if (ret == ERROR_MORE_DATA || ret == ERROR_SUCCESS)
|
if (ret == ERROR_MORE_DATA || ret == ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
ptr = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sz + size);
|
ptr = heap_alloc_zero(sz + size);
|
||||||
if (!ptr) return NULL;
|
if (!ptr) return NULL;
|
||||||
ustr = (UNICODE_STRING*)(ptr + ofs);
|
ustr = (UNICODE_STRING*)(ptr + ofs);
|
||||||
ustr->MaximumLength = size;
|
ustr->MaximumLength = size;
|
||||||
|
@ -86,7 +86,7 @@ static void* ADVAPI_GetDomainName(unsigned sz, unsigned ofs)
|
||||||
ret = RegQueryValueExW(key, wg, NULL, NULL, (LPBYTE)ustr->Buffer, &size);
|
ret = RegQueryValueExW(key, wg, NULL, NULL, (LPBYTE)ustr->Buffer, &size);
|
||||||
if (ret != ERROR_SUCCESS)
|
if (ret != ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
HeapFree(GetProcessHeap(), 0, ptr);
|
heap_free(ptr);
|
||||||
ptr = NULL;
|
ptr = NULL;
|
||||||
}
|
}
|
||||||
else ustr->Length = size - sizeof(WCHAR);
|
else ustr->Length = size - sizeof(WCHAR);
|
||||||
|
@ -96,8 +96,7 @@ static void* ADVAPI_GetDomainName(unsigned sz, unsigned ofs)
|
||||||
if (!ptr)
|
if (!ptr)
|
||||||
{
|
{
|
||||||
static const WCHAR wDomain[] = {'D','O','M','A','I','N','\0'};
|
static const WCHAR wDomain[] = {'D','O','M','A','I','N','\0'};
|
||||||
ptr = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
|
ptr = heap_alloc_zero(sz + sizeof(wDomain));
|
||||||
sz + sizeof(wDomain));
|
|
||||||
if (!ptr) return NULL;
|
if (!ptr) return NULL;
|
||||||
ustr = (UNICODE_STRING*)(ptr + ofs);
|
ustr = (UNICODE_STRING*)(ptr + ofs);
|
||||||
ustr->MaximumLength = sizeof(wDomain);
|
ustr->MaximumLength = sizeof(wDomain);
|
||||||
|
@ -265,7 +264,7 @@ NTSTATUS WINAPI LsaFreeMemory(IN PVOID Buffer)
|
||||||
{
|
{
|
||||||
TRACE("(%p)\n", Buffer);
|
TRACE("(%p)\n", Buffer);
|
||||||
|
|
||||||
HeapFree(GetProcessHeap(), 0, Buffer);
|
heap_free(Buffer);
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -689,8 +688,7 @@ NTSTATUS WINAPI LsaQueryInformationPolicy(
|
||||||
{
|
{
|
||||||
case PolicyAuditEventsInformation: /* 2 */
|
case PolicyAuditEventsInformation: /* 2 */
|
||||||
{
|
{
|
||||||
PPOLICY_AUDIT_EVENTS_INFO p = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
|
PPOLICY_AUDIT_EVENTS_INFO p = heap_alloc_zero(sizeof(POLICY_AUDIT_EVENTS_INFO));
|
||||||
sizeof(POLICY_AUDIT_EVENTS_INFO));
|
|
||||||
p->AuditingMode = FALSE; /* no auditing */
|
p->AuditingMode = FALSE; /* no auditing */
|
||||||
*Buffer = p;
|
*Buffer = p;
|
||||||
}
|
}
|
||||||
|
@ -720,7 +718,7 @@ NTSTATUS WINAPI LsaQueryInformationPolicy(
|
||||||
};
|
};
|
||||||
|
|
||||||
DWORD dwSize = MAX_COMPUTERNAME_LENGTH + 1;
|
DWORD dwSize = MAX_COMPUTERNAME_LENGTH + 1;
|
||||||
struct di * xdi = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*xdi));
|
struct di * xdi = heap_alloc_zero(sizeof(*xdi));
|
||||||
|
|
||||||
xdi->info.DomainName.MaximumLength = dwSize * sizeof(WCHAR);
|
xdi->info.DomainName.MaximumLength = dwSize * sizeof(WCHAR);
|
||||||
xdi->info.DomainName.Buffer = xdi->domain;
|
xdi->info.DomainName.Buffer = xdi->domain;
|
||||||
|
@ -733,7 +731,7 @@ NTSTATUS WINAPI LsaQueryInformationPolicy(
|
||||||
|
|
||||||
if (!ADVAPI_GetComputerSid(&xdi->sid))
|
if (!ADVAPI_GetComputerSid(&xdi->sid))
|
||||||
{
|
{
|
||||||
HeapFree(GetProcessHeap(), 0, xdi);
|
heap_free(xdi);
|
||||||
|
|
||||||
WARN("Computer SID not found\n");
|
WARN("Computer SID not found\n");
|
||||||
|
|
||||||
|
|
|
@ -494,12 +494,12 @@ BOOL ADVAPI_IsLocalComputer(LPCWSTR ServerName)
|
||||||
if (!ServerName || !ServerName[0])
|
if (!ServerName || !ServerName[0])
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
buf = HeapAlloc(GetProcessHeap(), 0, dwSize * sizeof(WCHAR));
|
buf = heap_alloc(dwSize * sizeof(WCHAR));
|
||||||
Result = GetComputerNameW(buf, &dwSize);
|
Result = GetComputerNameW(buf, &dwSize);
|
||||||
if (Result && (ServerName[0] == '\\') && (ServerName[1] == '\\'))
|
if (Result && (ServerName[0] == '\\') && (ServerName[1] == '\\'))
|
||||||
ServerName += 2;
|
ServerName += 2;
|
||||||
Result = Result && !lstrcmpW(ServerName, buf);
|
Result = Result && !lstrcmpW(ServerName, buf);
|
||||||
HeapFree(GetProcessHeap(), 0, buf);
|
heap_free(buf);
|
||||||
|
|
||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
@ -686,7 +686,7 @@ CheckTokenMembership( HANDLE token, PSID sid_to_check,
|
||||||
if (!ret && GetLastError() != ERROR_INSUFFICIENT_BUFFER)
|
if (!ret && GetLastError() != ERROR_INSUFFICIENT_BUFFER)
|
||||||
goto exit;
|
goto exit;
|
||||||
|
|
||||||
token_groups = HeapAlloc(GetProcessHeap(), 0, size);
|
token_groups = heap_alloc(size);
|
||||||
if (!token_groups)
|
if (!token_groups)
|
||||||
{
|
{
|
||||||
ret = FALSE;
|
ret = FALSE;
|
||||||
|
@ -712,7 +712,7 @@ CheckTokenMembership( HANDLE token, PSID sid_to_check,
|
||||||
}
|
}
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
HeapFree(GetProcessHeap(), 0, token_groups);
|
heap_free(token_groups);
|
||||||
if (thread_token != NULL) CloseHandle(thread_token);
|
if (thread_token != NULL) CloseHandle(thread_token);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -1051,7 +1051,7 @@ IsTokenRestricted( HANDLE TokenHandle )
|
||||||
if (status != STATUS_BUFFER_TOO_SMALL)
|
if (status != STATUS_BUFFER_TOO_SMALL)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
groups = HeapAlloc(GetProcessHeap(), 0, size);
|
groups = heap_alloc(size);
|
||||||
if (!groups)
|
if (!groups)
|
||||||
{
|
{
|
||||||
SetLastError(ERROR_OUTOFMEMORY);
|
SetLastError(ERROR_OUTOFMEMORY);
|
||||||
|
@ -1061,16 +1061,12 @@ IsTokenRestricted( HANDLE TokenHandle )
|
||||||
status = NtQueryInformationToken(TokenHandle, TokenRestrictedSids, groups, size, &size);
|
status = NtQueryInformationToken(TokenHandle, TokenRestrictedSids, groups, size, &size);
|
||||||
if (status != STATUS_SUCCESS)
|
if (status != STATUS_SUCCESS)
|
||||||
{
|
{
|
||||||
HeapFree(GetProcessHeap(), 0, groups);
|
heap_free(groups);
|
||||||
return set_ntstatus(status);
|
return set_ntstatus(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (groups->GroupCount)
|
restricted = groups->GroupCount > 0;
|
||||||
restricted = TRUE;
|
heap_free(groups);
|
||||||
else
|
|
||||||
restricted = FALSE;
|
|
||||||
|
|
||||||
HeapFree(GetProcessHeap(), 0, groups);
|
|
||||||
|
|
||||||
return restricted;
|
return restricted;
|
||||||
}
|
}
|
||||||
|
@ -1893,7 +1889,7 @@ LookupPrivilegeNameA( LPCSTR lpSystemName, PLUID lpLuid, LPSTR lpName,
|
||||||
ret = LookupPrivilegeNameW(lpSystemNameW.Buffer, lpLuid, NULL, &wLen);
|
ret = LookupPrivilegeNameW(lpSystemNameW.Buffer, lpLuid, NULL, &wLen);
|
||||||
if (!ret && GetLastError() == ERROR_INSUFFICIENT_BUFFER)
|
if (!ret && GetLastError() == ERROR_INSUFFICIENT_BUFFER)
|
||||||
{
|
{
|
||||||
LPWSTR lpNameW = HeapAlloc(GetProcessHeap(), 0, wLen * sizeof(WCHAR));
|
LPWSTR lpNameW = heap_alloc(wLen * sizeof(WCHAR));
|
||||||
|
|
||||||
ret = LookupPrivilegeNameW(lpSystemNameW.Buffer, lpLuid, lpNameW,
|
ret = LookupPrivilegeNameW(lpSystemNameW.Buffer, lpLuid, lpNameW,
|
||||||
&wLen);
|
&wLen);
|
||||||
|
@ -1922,7 +1918,7 @@ LookupPrivilegeNameA( LPCSTR lpSystemName, PLUID lpLuid, LPSTR lpName,
|
||||||
*cchName = len - 1;
|
*cchName = len - 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
HeapFree(GetProcessHeap(), 0, lpNameW);
|
heap_free(lpNameW);
|
||||||
}
|
}
|
||||||
RtlFreeUnicodeString(&lpSystemNameW);
|
RtlFreeUnicodeString(&lpSystemNameW);
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -2020,7 +2016,7 @@ GetFileSecurityA( LPCSTR lpFileName,
|
||||||
name = SERV_dup(lpFileName);
|
name = SERV_dup(lpFileName);
|
||||||
r = GetFileSecurityW( name, RequestedInformation, pSecurityDescriptor,
|
r = GetFileSecurityW( name, RequestedInformation, pSecurityDescriptor,
|
||||||
nLength, lpnLengthNeeded );
|
nLength, lpnLengthNeeded );
|
||||||
HeapFree( GetProcessHeap(), 0, name );
|
heap_free( name );
|
||||||
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
@ -2085,9 +2081,9 @@ LookupAccountSidA(
|
||||||
|
|
||||||
systemW = SERV_dup(system);
|
systemW = SERV_dup(system);
|
||||||
if (account)
|
if (account)
|
||||||
accountW = HeapAlloc( GetProcessHeap(), 0, accountSizeW * sizeof(WCHAR) );
|
accountW = heap_alloc( accountSizeW * sizeof(WCHAR) );
|
||||||
if (domain)
|
if (domain)
|
||||||
domainW = HeapAlloc( GetProcessHeap(), 0, domainSizeW * sizeof(WCHAR) );
|
domainW = heap_alloc( domainSizeW * sizeof(WCHAR) );
|
||||||
|
|
||||||
r = LookupAccountSidW( systemW, sid, accountW, &accountSizeW, domainW, &domainSizeW, name_use );
|
r = LookupAccountSidW( systemW, sid, accountW, &accountSizeW, domainW, &domainSizeW, name_use );
|
||||||
|
|
||||||
|
@ -2112,9 +2108,9 @@ LookupAccountSidA(
|
||||||
*domainSize = domainSizeW + 1;
|
*domainSize = domainSizeW + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
HeapFree( GetProcessHeap(), 0, systemW );
|
heap_free( systemW );
|
||||||
HeapFree( GetProcessHeap(), 0, accountW );
|
heap_free( accountW );
|
||||||
HeapFree( GetProcessHeap(), 0, domainW );
|
heap_free( domainW );
|
||||||
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
@ -2183,7 +2179,7 @@ LookupAccountSidW(
|
||||||
DWORD size = MAX_COMPUTERNAME_LENGTH + 1;
|
DWORD size = MAX_COMPUTERNAME_LENGTH + 1;
|
||||||
BOOL result;
|
BOOL result;
|
||||||
|
|
||||||
computer_name = HeapAlloc(GetProcessHeap(), 0, size * sizeof(WCHAR));
|
computer_name = heap_alloc(size * sizeof(WCHAR));
|
||||||
result = GetComputerNameW(computer_name, &size);
|
result = GetComputerNameW(computer_name, &size);
|
||||||
|
|
||||||
if (result) {
|
if (result) {
|
||||||
|
@ -2236,8 +2232,7 @@ LookupAccountSidW(
|
||||||
break;
|
break;
|
||||||
case 1000: /* first user account */
|
case 1000: /* first user account */
|
||||||
size = UNLEN + 1;
|
size = UNLEN + 1;
|
||||||
account_name = HeapAlloc(
|
account_name = heap_alloc(size * sizeof(WCHAR));
|
||||||
GetProcessHeap(), 0, size * sizeof(WCHAR));
|
|
||||||
if (GetUserNameW(account_name, &size))
|
if (GetUserNameW(account_name, &size))
|
||||||
ac = account_name;
|
ac = account_name;
|
||||||
else
|
else
|
||||||
|
@ -2284,14 +2279,14 @@ LookupAccountSidW(
|
||||||
else
|
else
|
||||||
*accountSize = ac_len + 1;
|
*accountSize = ac_len + 1;
|
||||||
|
|
||||||
HeapFree(GetProcessHeap(), 0, account_name);
|
heap_free(account_name);
|
||||||
HeapFree(GetProcessHeap(), 0, computer_name);
|
heap_free(computer_name);
|
||||||
if (status) *name_use = use;
|
if (status) *name_use = use;
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
HeapFree(GetProcessHeap(), 0, account_name);
|
heap_free(account_name);
|
||||||
HeapFree(GetProcessHeap(), 0, computer_name);
|
heap_free(computer_name);
|
||||||
SetLastError(ERROR_NONE_MAPPED);
|
SetLastError(ERROR_NONE_MAPPED);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -2310,7 +2305,7 @@ BOOL WINAPI SetFileSecurityA( LPCSTR lpFileName,
|
||||||
|
|
||||||
name = SERV_dup(lpFileName);
|
name = SERV_dup(lpFileName);
|
||||||
r = SetFileSecurityW( name, RequestedInformation, pSecurityDescriptor );
|
r = SetFileSecurityW( name, RequestedInformation, pSecurityDescriptor );
|
||||||
HeapFree( GetProcessHeap(), 0, name );
|
heap_free( name );
|
||||||
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
@ -2630,7 +2625,7 @@ LookupAccountNameA(
|
||||||
RtlCreateUnicodeStringFromAsciiz(&lpAccountW, account);
|
RtlCreateUnicodeStringFromAsciiz(&lpAccountW, account);
|
||||||
|
|
||||||
if (ReferencedDomainName)
|
if (ReferencedDomainName)
|
||||||
lpReferencedDomainNameW = HeapAlloc(GetProcessHeap(), 0, *cbReferencedDomainName * sizeof(WCHAR));
|
lpReferencedDomainNameW = heap_alloc(*cbReferencedDomainName * sizeof(WCHAR));
|
||||||
|
|
||||||
ret = LookupAccountNameW(lpSystemW.Buffer, lpAccountW.Buffer, sid, cbSid, lpReferencedDomainNameW,
|
ret = LookupAccountNameW(lpSystemW.Buffer, lpAccountW.Buffer, sid, cbSid, lpReferencedDomainNameW,
|
||||||
cbReferencedDomainName, name_use);
|
cbReferencedDomainName, name_use);
|
||||||
|
@ -2643,7 +2638,7 @@ LookupAccountNameA(
|
||||||
|
|
||||||
RtlFreeUnicodeString(&lpSystemW);
|
RtlFreeUnicodeString(&lpSystemW);
|
||||||
RtlFreeUnicodeString(&lpAccountW);
|
RtlFreeUnicodeString(&lpAccountW);
|
||||||
HeapFree(GetProcessHeap(), 0, lpReferencedDomainNameW);
|
heap_free(lpReferencedDomainNameW);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -2830,7 +2825,7 @@ BOOL lookup_local_wellknown_name( const LSA_UNICODE_STRING *account_and_domain,
|
||||||
{
|
{
|
||||||
DWORD len, sidLen = SECURITY_MAX_SID_SIZE;
|
DWORD len, sidLen = SECURITY_MAX_SID_SIZE;
|
||||||
|
|
||||||
if (!(pSid = HeapAlloc( GetProcessHeap(), 0, sidLen ))) return FALSE;
|
if (!(pSid = heap_alloc( sidLen ))) return FALSE;
|
||||||
|
|
||||||
if ((ret = CreateWellKnownSid( ACCOUNT_SIDS[i].type, NULL, pSid, &sidLen )))
|
if ((ret = CreateWellKnownSid( ACCOUNT_SIDS[i].type, NULL, pSid, &sidLen )))
|
||||||
{
|
{
|
||||||
|
@ -2862,7 +2857,7 @@ BOOL lookup_local_wellknown_name( const LSA_UNICODE_STRING *account_and_domain,
|
||||||
if (ret)
|
if (ret)
|
||||||
*peUse = ACCOUNT_SIDS[i].name_use;
|
*peUse = ACCOUNT_SIDS[i].name_use;
|
||||||
|
|
||||||
HeapFree(GetProcessHeap(), 0, pSid);
|
heap_free(pSid);
|
||||||
*handled = TRUE;
|
*handled = TRUE;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -2887,7 +2882,7 @@ BOOL lookup_local_user_name( const LSA_UNICODE_STRING *account_and_domain,
|
||||||
/* Let the current Unix user id masquerade as first Windows user account */
|
/* Let the current Unix user id masquerade as first Windows user account */
|
||||||
|
|
||||||
nameLen = UNLEN + 1;
|
nameLen = UNLEN + 1;
|
||||||
if (!(userName = HeapAlloc( GetProcessHeap(), 0, nameLen * sizeof(WCHAR) ))) return FALSE;
|
if (!(userName = heap_alloc( nameLen * sizeof(WCHAR) ))) return FALSE;
|
||||||
|
|
||||||
if (domain.Buffer)
|
if (domain.Buffer)
|
||||||
{
|
{
|
||||||
|
@ -2918,7 +2913,7 @@ BOOL lookup_local_user_name( const LSA_UNICODE_STRING *account_and_domain,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
HeapFree(GetProcessHeap(), 0, userName);
|
heap_free(userName);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3588,7 +3583,7 @@ static DWORD trustee_name_A_to_W(TRUSTEE_FORM form, char *trustee_nameA, WCHAR *
|
||||||
|
|
||||||
if (objA)
|
if (objA)
|
||||||
{
|
{
|
||||||
if (!(objW = HeapAlloc( GetProcessHeap(), 0, sizeof(OBJECTS_AND_NAME_W) )))
|
if (!(objW = heap_alloc( sizeof(OBJECTS_AND_NAME_W) )))
|
||||||
return ERROR_NOT_ENOUGH_MEMORY;
|
return ERROR_NOT_ENOUGH_MEMORY;
|
||||||
|
|
||||||
objW->ObjectsPresent = objA->ObjectsPresent;
|
objW->ObjectsPresent = objA->ObjectsPresent;
|
||||||
|
@ -3616,7 +3611,7 @@ static void free_trustee_name(TRUSTEE_FORM form, WCHAR *trustee_nameW)
|
||||||
switch (form)
|
switch (form)
|
||||||
{
|
{
|
||||||
case TRUSTEE_IS_NAME:
|
case TRUSTEE_IS_NAME:
|
||||||
HeapFree( GetProcessHeap(), 0, trustee_nameW );
|
heap_free( trustee_nameW );
|
||||||
break;
|
break;
|
||||||
case TRUSTEE_IS_OBJECTS_AND_NAME:
|
case TRUSTEE_IS_OBJECTS_AND_NAME:
|
||||||
{
|
{
|
||||||
|
@ -3624,10 +3619,10 @@ static void free_trustee_name(TRUSTEE_FORM form, WCHAR *trustee_nameW)
|
||||||
|
|
||||||
if (objW)
|
if (objW)
|
||||||
{
|
{
|
||||||
HeapFree( GetProcessHeap(), 0, objW->ptstrName );
|
heap_free( objW->ptstrName );
|
||||||
HeapFree( GetProcessHeap(), 0, objW->InheritedObjectTypeName );
|
heap_free( objW->InheritedObjectTypeName );
|
||||||
HeapFree( GetProcessHeap(), 0, objW->ObjectTypeName );
|
heap_free( objW->ObjectTypeName );
|
||||||
HeapFree( GetProcessHeap(), 0, objW );
|
heap_free( objW );
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -3656,7 +3651,7 @@ DWORD WINAPI SetEntriesInAclA( ULONG count, PEXPLICIT_ACCESSA pEntries,
|
||||||
if (!count && !OldAcl)
|
if (!count && !OldAcl)
|
||||||
return ERROR_SUCCESS;
|
return ERROR_SUCCESS;
|
||||||
|
|
||||||
pEntriesW = HeapAlloc( GetProcessHeap(), 0, count * sizeof(EXPLICIT_ACCESSW) );
|
pEntriesW = heap_alloc( count * sizeof(EXPLICIT_ACCESSW) );
|
||||||
if (!pEntriesW)
|
if (!pEntriesW)
|
||||||
return ERROR_NOT_ENOUGH_MEMORY;
|
return ERROR_NOT_ENOUGH_MEMORY;
|
||||||
|
|
||||||
|
@ -3692,7 +3687,7 @@ cleanup:
|
||||||
for (free_index = 0; free_index < alloc_index; ++free_index)
|
for (free_index = 0; free_index < alloc_index; ++free_index)
|
||||||
free_trustee_name( pEntriesW[free_index].Trustee.TrusteeForm, pEntriesW[free_index].Trustee.ptstrName );
|
free_trustee_name( pEntriesW[free_index].Trustee.TrusteeForm, pEntriesW[free_index].Trustee.ptstrName );
|
||||||
|
|
||||||
HeapFree( GetProcessHeap(), 0, pEntriesW );
|
heap_free( pEntriesW );
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3717,7 +3712,7 @@ DWORD WINAPI SetEntriesInAclW( ULONG count, PEXPLICIT_ACCESSW pEntries,
|
||||||
return ERROR_SUCCESS;
|
return ERROR_SUCCESS;
|
||||||
|
|
||||||
/* allocate array of maximum sized sids allowed */
|
/* allocate array of maximum sized sids allowed */
|
||||||
ppsid = HeapAlloc(GetProcessHeap(), 0, count * (sizeof(SID *) + FIELD_OFFSET(SID, SubAuthority[SID_MAX_SUB_AUTHORITIES])));
|
ppsid = heap_alloc(count * (sizeof(SID *) + FIELD_OFFSET(SID, SubAuthority[SID_MAX_SUB_AUTHORITIES])));
|
||||||
if (!ppsid)
|
if (!ppsid)
|
||||||
return ERROR_OUTOFMEMORY;
|
return ERROR_OUTOFMEMORY;
|
||||||
|
|
||||||
|
@ -3955,7 +3950,7 @@ DWORD WINAPI SetEntriesInAclW( ULONG count, PEXPLICIT_ACCESSW pEntries,
|
||||||
}
|
}
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
HeapFree(GetProcessHeap(), 0, ppsid);
|
heap_free(ppsid);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3976,7 +3971,7 @@ DWORD WINAPI SetNamedSecurityInfoA(LPSTR pObjectName,
|
||||||
r = SetNamedSecurityInfoW( wstr, ObjectType, SecurityInfo, psidOwner,
|
r = SetNamedSecurityInfoW( wstr, ObjectType, SecurityInfo, psidOwner,
|
||||||
psidGroup, pDacl, pSacl );
|
psidGroup, pDacl, pSacl );
|
||||||
|
|
||||||
HeapFree( GetProcessHeap(), 0, wstr );
|
heap_free( wstr );
|
||||||
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
@ -4599,7 +4594,7 @@ BOOL WINAPI ConvertStringSecurityDescriptorToSecurityDescriptorA(
|
||||||
ret = ConvertStringSecurityDescriptorToSecurityDescriptorW(StringSecurityDescriptorW,
|
ret = ConvertStringSecurityDescriptorToSecurityDescriptorW(StringSecurityDescriptorW,
|
||||||
StringSDRevision, SecurityDescriptor,
|
StringSDRevision, SecurityDescriptor,
|
||||||
SecurityDescriptorSize);
|
SecurityDescriptorSize);
|
||||||
HeapFree(GetProcessHeap(), 0, StringSecurityDescriptorW);
|
heap_free(StringSecurityDescriptorW);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -5049,7 +5044,7 @@ BOOL WINAPI ConvertSecurityDescriptorToStringSecurityDescriptorA(PSECURITY_DESCR
|
||||||
int lenA;
|
int lenA;
|
||||||
|
|
||||||
lenA = WideCharToMultiByte(CP_ACP, 0, wstr, len, NULL, 0, NULL, NULL);
|
lenA = WideCharToMultiByte(CP_ACP, 0, wstr, len, NULL, 0, NULL, NULL);
|
||||||
*OutputString = HeapAlloc(GetProcessHeap(), 0, lenA);
|
*OutputString = heap_alloc(lenA);
|
||||||
WideCharToMultiByte(CP_ACP, 0, wstr, len, *OutputString, lenA, NULL, NULL);
|
WideCharToMultiByte(CP_ACP, 0, wstr, len, *OutputString, lenA, NULL, NULL);
|
||||||
LocalFree(wstr);
|
LocalFree(wstr);
|
||||||
|
|
||||||
|
@ -5106,7 +5101,7 @@ BOOL WINAPI ConvertStringSidToSidA(LPCSTR StringSid, PSID* Sid)
|
||||||
{
|
{
|
||||||
WCHAR *wStringSid = SERV_dup(StringSid);
|
WCHAR *wStringSid = SERV_dup(StringSid);
|
||||||
bret = ConvertStringSidToSidW(wStringSid, Sid);
|
bret = ConvertStringSidToSidW(wStringSid, Sid);
|
||||||
HeapFree(GetProcessHeap(), 0, wStringSid);
|
heap_free(wStringSid);
|
||||||
}
|
}
|
||||||
return bret;
|
return bret;
|
||||||
}
|
}
|
||||||
|
@ -5197,11 +5192,11 @@ BOOL WINAPI CreatePrivateObjectSecurity(
|
||||||
needed += WINE_SIZE_OF_WORLD_ACCESS_ACL;
|
needed += WINE_SIZE_OF_WORLD_ACCESS_ACL;
|
||||||
needed += WINE_SIZE_OF_WORLD_ACCESS_ACL;
|
needed += WINE_SIZE_OF_WORLD_ACCESS_ACL;
|
||||||
|
|
||||||
if (!(buffer = HeapAlloc( GetProcessHeap(), 0, needed ))) return FALSE;
|
if (!(buffer = heap_alloc( needed ))) return FALSE;
|
||||||
relative = (SECURITY_DESCRIPTOR_RELATIVE *)buffer;
|
relative = (SECURITY_DESCRIPTOR_RELATIVE *)buffer;
|
||||||
if (!InitializeSecurityDescriptor( relative, SECURITY_DESCRIPTOR_REVISION ))
|
if (!InitializeSecurityDescriptor( relative, SECURITY_DESCRIPTOR_REVISION ))
|
||||||
{
|
{
|
||||||
HeapFree( GetProcessHeap(), 0, buffer );
|
heap_free( buffer );
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
relative->Control |= SE_SELF_RELATIVE;
|
relative->Control |= SE_SELF_RELATIVE;
|
||||||
|
@ -5230,7 +5225,7 @@ BOOL WINAPI DestroyPrivateObjectSecurity( PSECURITY_DESCRIPTOR* ObjectDescriptor
|
||||||
{
|
{
|
||||||
FIXME("%p - stub\n", ObjectDescriptor);
|
FIXME("%p - stub\n", ObjectDescriptor);
|
||||||
|
|
||||||
HeapFree( GetProcessHeap(), 0, *ObjectDescriptor );
|
heap_free( *ObjectDescriptor );
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5279,12 +5274,12 @@ BOOL WINAPI CreateProcessAsUserA(
|
||||||
ret = CreateProcessAsUserW(hToken, appW, cmdlnW, lpProcessAttributes,
|
ret = CreateProcessAsUserW(hToken, appW, cmdlnW, lpProcessAttributes,
|
||||||
lpThreadAttributes, bInheritHandles, dwCreationFlags,
|
lpThreadAttributes, bInheritHandles, dwCreationFlags,
|
||||||
lpEnvironment, cwdW, &sinfo, lpProcessInformation);
|
lpEnvironment, cwdW, &sinfo, lpProcessInformation);
|
||||||
HeapFree(GetProcessHeap(), 0, appW);
|
heap_free(appW);
|
||||||
HeapFree(GetProcessHeap(), 0, cmdlnW);
|
heap_free(cmdlnW);
|
||||||
HeapFree(GetProcessHeap(), 0, cwdW);
|
heap_free(cwdW);
|
||||||
HeapFree(GetProcessHeap(), 0, sinfo.lpReserved);
|
heap_free(sinfo.lpReserved);
|
||||||
HeapFree(GetProcessHeap(), 0, sinfo.lpDesktop);
|
heap_free(sinfo.lpDesktop);
|
||||||
HeapFree(GetProcessHeap(), 0, sinfo.lpTitle);
|
heap_free(sinfo.lpTitle);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -5573,7 +5568,7 @@ DWORD WINAPI GetNamedSecurityInfoA(LPSTR pObjectName,
|
||||||
r = GetNamedSecurityInfoW( wstr, ObjectType, SecurityInfo, ppsidOwner,
|
r = GetNamedSecurityInfoW( wstr, ObjectType, SecurityInfo, ppsidOwner,
|
||||||
ppsidGroup, ppDacl, ppSacl, ppSecurityDescriptor );
|
ppsidGroup, ppDacl, ppSacl, ppSecurityDescriptor );
|
||||||
|
|
||||||
HeapFree( GetProcessHeap(), 0, wstr );
|
heap_free( wstr );
|
||||||
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue