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

This commit is contained in:
James Hawkins 2005-10-04 11:30:20 +00:00 committed by Alexandre Julliard
parent 036e02281c
commit 0eddf4341f
1 changed files with 8 additions and 2 deletions

View File

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