Commit 0eddf434 authored by James Hawkins's avatar James Hawkins Committed by Alexandre Julliard

Check the size of the input buffer so we don't write past the end.

parent 036e0228
...@@ -544,6 +544,8 @@ BOOL WINAPI GetFileVersionInfoW( LPCWSTR filename, DWORD handle, ...@@ -544,6 +544,8 @@ BOOL WINAPI GetFileVersionInfoW( LPCWSTR filename, DWORD handle,
} }
else else
{ {
static const char signature[] = "FE2X";
DWORD bufsize = vvis->wLength + strlen(signature);
DWORD convbuf; DWORD convbuf;
/* We have a 32bit resource. /* We have a 32bit resource.
...@@ -552,8 +554,12 @@ BOOL WINAPI GetFileVersionInfoW( LPCWSTR filename, DWORD handle, ...@@ -552,8 +554,12 @@ BOOL WINAPI GetFileVersionInfoW( LPCWSTR filename, DWORD handle,
* This extra buffer is used for Unicode to ANSI conversions in A-Calls * This extra buffer is used for Unicode to ANSI conversions in A-Calls
*/ */
convbuf = datasize - vvis->wLength; /* information is truncated to datasize bytes */
memcpy( ((char*)(data))+vvis->wLength, "FE2X", convbuf > 4 ? 4 : convbuf ); if (datasize >= bufsize)
{
convbuf = datasize - vvis->wLength;
memcpy( ((char*)(data))+vvis->wLength, signature, convbuf > 4 ? 4 : convbuf );
}
} }
SetLastError(0); SetLastError(0);
......
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