winemenubuilder: Fix crash on invalid icon entries.
This commit is contained in:
parent
3ae113a957
commit
c205e6800a
|
@ -612,6 +612,7 @@ static int populate_module_icons(HMODULE hModule, GRPICONDIR *grpIconDir, ICONDI
|
||||||
if ((hResData = LoadResource(hModule, hResInfo)))
|
if ((hResData = LoadResource(hModule, hResInfo)))
|
||||||
{
|
{
|
||||||
BITMAPINFO *pIcon;
|
BITMAPINFO *pIcon;
|
||||||
|
DWORD size = min( grpIconDir->idEntries[i].dwBytesInRes, ((IMAGE_RESOURCE_DATA_ENTRY *)hResInfo)->Size );
|
||||||
if ((pIcon = LockResource(hResData)))
|
if ((pIcon = LockResource(hResData)))
|
||||||
{
|
{
|
||||||
iconDirEntries[validEntries].bWidth = grpIconDir->idEntries[i].bWidth;
|
iconDirEntries[validEntries].bWidth = grpIconDir->idEntries[i].bWidth;
|
||||||
|
@ -620,11 +621,11 @@ static int populate_module_icons(HMODULE hModule, GRPICONDIR *grpIconDir, ICONDI
|
||||||
iconDirEntries[validEntries].bReserved = grpIconDir->idEntries[i].bReserved;
|
iconDirEntries[validEntries].bReserved = grpIconDir->idEntries[i].bReserved;
|
||||||
iconDirEntries[validEntries].wPlanes = grpIconDir->idEntries[i].wPlanes;
|
iconDirEntries[validEntries].wPlanes = grpIconDir->idEntries[i].wPlanes;
|
||||||
iconDirEntries[validEntries].wBitCount = grpIconDir->idEntries[i].wBitCount;
|
iconDirEntries[validEntries].wBitCount = grpIconDir->idEntries[i].wBitCount;
|
||||||
iconDirEntries[validEntries].dwBytesInRes = grpIconDir->idEntries[i].dwBytesInRes;
|
iconDirEntries[validEntries].dwBytesInRes = size;
|
||||||
iconDirEntries[validEntries].dwImageOffset = *iconOffset;
|
iconDirEntries[validEntries].dwImageOffset = *iconOffset;
|
||||||
validEntries++;
|
validEntries++;
|
||||||
memcpy(&icons[*iconOffset], pIcon, grpIconDir->idEntries[i].dwBytesInRes);
|
memcpy(&icons[*iconOffset], pIcon, size);
|
||||||
*iconOffset += grpIconDir->idEntries[i].dwBytesInRes;
|
*iconOffset += size;
|
||||||
}
|
}
|
||||||
FreeResource(hResData);
|
FreeResource(hResData);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue