From 66f65090ddb3fd4d7b3c22f583fa47f6106a6ac8 Mon Sep 17 00:00:00 2001 From: Bart Oldeman Date: Tue, 7 Jul 2009 13:51:54 +0000 Subject: [PATCH] Corrected a bug in exeflat: it was writing 32 bytes too many from possibly unexisting buffers after compressing exe files. git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1480 6ac86273-5f31-0410-b378-82cca8765d1b --- utils/exeflat.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/utils/exeflat.c b/utils/exeflat.c index 62dde85..5414b00 100644 --- a/utils/exeflat.c +++ b/utils/exeflat.c @@ -210,13 +210,14 @@ static int exeflat(const char *srcfile, const char *dstfile, printf("Compressing kernel - %s format\n", (compress_sys_file)?"sys":"exe"); } if (UPX && !compress_sys_file) { + ULONG realsize; /* write header without relocations to file */ exe_header nheader = *header; nheader.exRelocItems = 0; nheader.exHeaderSize = 2; - size += 32; - nheader.exPages = (UWORD)(size >> 9); - nheader.exExtraBytes = (UWORD)size & 511; + realsize = size + 32; + nheader.exPages = (UWORD)(realsize >> 9); + nheader.exExtraBytes = (UWORD)realsize & 511; if (nheader.exExtraBytes) nheader.exPages++; if (fwrite(&nheader, sizeof(nheader), 1, dest) != 1) {