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++) for (i = 0; i < icon2.size(); i++)
{ {
Icon* icon = &icon2[order[i].index2]; 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); seeker += sizeof(DWORD);
*(LPDWORD) seeker = 0;
seeker += sizeof(DWORD);
memcpy(seeker, icon->data, size); memcpy(seeker, icon->data, size);
seeker += size; seeker += FIX_ENDIAN_INT32(size);
} }
// add terminator // add terminator
*(LPDWORD) seeker = 0; memset(seeker, 0, sizeof(DWORD));
// done // done
destroy_icon_group(group); destroy_icon_group(group);