Fix unaligned memory access (bug #290)

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7193 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
anders_k 2020-07-18 23:18:18 +00:00
parent 5c78d6fafe
commit 6c842ff1c3

View file

@ -381,19 +381,18 @@ unsigned char* generate_uninstall_icon_data(IconGroup icon1, IconGroup icon2, si
for (i = 0; i < icon2.size(); i++)
{
Icon* icon = &icon2[order[i].index2];
DWORD size = FIX_ENDIAN_INT32(icon->meta.dwRawSize);
DWORD size = icon->meta.dwRawSize;
*(LPDWORD) seeker = FIX_ENDIAN_INT32(size);
memcpy(seeker, &size, sizeof(size));
seeker += sizeof(size);
memset(seeker, 0, sizeof(DWORD));
seeker += sizeof(DWORD);
*(LPDWORD) seeker = 0;
seeker += sizeof(DWORD);
memcpy(seeker, icon->data, size);
seeker += size;
seeker += FIX_ENDIAN_INT32(size);
}
// add terminator
*(LPDWORD) seeker = 0;
memset(seeker, 0, sizeof(DWORD));
// done
destroy_icon_group(group);