IN LPVOID lpRawData)
{
NTSTATUS Status;
- ANSI_STRING *Strings;
+ PANSI_STRING *Strings;
ANSI_STRING ComputerName;
WORD i;
CHAR szComputerName[MAX_COMPUTERNAME_LENGTH + 1];
wNumStrings, dwDataSize, lpStrings, lpRawData);
Strings = HeapAlloc(GetProcessHeap(),
- 0,
- wNumStrings * sizeof(ANSI_STRING));
+ HEAP_ZERO_MEMORY,
+ wNumStrings * sizeof(PANSI_STRING));
if (!Strings)
{
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
}
for (i = 0; i < wNumStrings; i++)
- RtlInitAnsiString(&Strings[i], lpStrings[i]);
+ {
+ Strings[i] = HeapAlloc(GetProcessHeap(),
+ HEAP_ZERO_MEMORY,
+ sizeof(ANSI_STRING));
+ if (Strings[i])
+ {
+ RtlInitAnsiString(Strings[i], lpStrings[i]);
+ }
+ }
dwSize = MAX_COMPUTERNAME_LENGTH + 1;
GetComputerNameA(szComputerName, &dwSize);
dwEventID,
wNumStrings,
dwDataSize,
- (PRPC_STRING) &ComputerName,
+ (PRPC_STRING)&ComputerName,
lpUserSid,
- (PRPC_STRING*) &Strings,
+ (PRPC_STRING*)Strings,
lpRawData,
0,
NULL,
}
RpcEndExcept;
+ for (i = 0; i < wNumStrings; i++)
+ {
+ if (Strings[i] != NULL)
+ HeapFree(GetProcessHeap(), 0, Strings[i]);
+ }
+
HeapFree(GetProcessHeap(), 0, Strings);
if (!NT_SUCCESS(Status))
IN LPVOID lpRawData)
{
NTSTATUS Status;
- UNICODE_STRING *Strings;
+ PUNICODE_STRING *Strings;
UNICODE_STRING ComputerName;
WORD i;
WCHAR szComputerName[MAX_COMPUTERNAME_LENGTH + 1];
Strings = HeapAlloc(GetProcessHeap(),
0,
- wNumStrings * sizeof(UNICODE_STRING));
+ wNumStrings * sizeof(PUNICODE_STRING));
if (!Strings)
{
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
}
for (i = 0; i < wNumStrings; i++)
- RtlInitUnicodeString(&Strings[i], lpStrings[i]);
+ {
+ Strings[i] = HeapAlloc(GetProcessHeap(),
+ HEAP_ZERO_MEMORY,
+ sizeof(ANSI_STRING));
+ if (Strings[i])
+ {
+ RtlInitUnicodeString(Strings[i], lpStrings[i]);
+ }
+ }
dwSize = MAX_COMPUTERNAME_LENGTH + 1;
GetComputerNameW(szComputerName, &dwSize);
dwEventID,
wNumStrings,
dwDataSize,
- (PRPC_UNICODE_STRING) &ComputerName,
+ (PRPC_UNICODE_STRING)&ComputerName,
lpUserSid,
- (PRPC_UNICODE_STRING*) &Strings,
+ (PRPC_UNICODE_STRING*)Strings,
lpRawData,
0,
NULL,
}
RpcEndExcept;
+ for (i = 0; i < wNumStrings; i++)
+ {
+ if (Strings[i] != NULL)
+ HeapFree(GetProcessHeap(), 0, Strings[i]);
+ }
+
HeapFree(GetProcessHeap(), 0, Strings);
if (!NT_SUCCESS(Status))