advapi32: Fix the size calculation in StartServiceW.
Calculating an open-ended structure using sizeof doesn't yield an accurate size because of alignment.
This commit is contained in:
parent
8cda4a8d90
commit
b2f4c7737b
|
@ -484,7 +484,7 @@ static BOOL service_send_start_message(HANDLE pipe, LPCWSTR *argv, DWORD argc)
|
||||||
for (i=0; i<argc; i++)
|
for (i=0; i<argc; i++)
|
||||||
len += strlenW(argv[i])+1;
|
len += strlenW(argv[i])+1;
|
||||||
|
|
||||||
ssi = HeapAlloc(GetProcessHeap(),0,sizeof *ssi + (len-1)*sizeof(WCHAR));
|
ssi = HeapAlloc(GetProcessHeap(),0,FIELD_OFFSET(service_start_info, str[len]));
|
||||||
ssi->cmd = WINESERV_STARTINFO;
|
ssi->cmd = WINESERV_STARTINFO;
|
||||||
ssi->size = len;
|
ssi->size = len;
|
||||||
|
|
||||||
|
@ -497,7 +497,7 @@ static BOOL service_send_start_message(HANDLE pipe, LPCWSTR *argv, DWORD argc)
|
||||||
}
|
}
|
||||||
*p=0;
|
*p=0;
|
||||||
|
|
||||||
r = WriteFile(pipe, ssi, sizeof *ssi + (len-1)*sizeof(WCHAR), &count, NULL);
|
r = WriteFile(pipe, ssi, FIELD_OFFSET(service_start_info, str[len]), &count, NULL);
|
||||||
if (r)
|
if (r)
|
||||||
{
|
{
|
||||||
r = ReadFile(pipe, &result, sizeof result, &count, NULL);
|
r = ReadFile(pipe, &result, sizeof result, &count, NULL);
|
||||||
|
|
Loading…
Reference in New Issue