From 6c842ff1c348cd7cf65f5becb8e3efc452799e5b Mon Sep 17 00:00:00 2001 From: anders_k Date: Sat, 18 Jul 2020 23:18:18 +0000 Subject: [PATCH] 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 --- Source/icon.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/Source/icon.cpp b/Source/icon.cpp index e992e4ee..e07ee578 100644 --- a/Source/icon.cpp +++ b/Source/icon.cpp @@ -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);