Commit b2f4c773 authored by Rob Shearman's avatar Rob Shearman Committed by Alexandre Julliard

advapi32: Fix the size calculation in StartServiceW.

Calculating an open-ended structure using sizeof doesn't yield an accurate size because of alignment.
parent 8cda4a8d
...@@ -484,7 +484,7 @@ static BOOL service_send_start_message(HANDLE pipe, LPCWSTR *argv, DWORD argc) ...@@ -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) ...@@ -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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment