munmap dead input pages after blocksize output

committer: jreiser <jreiser> 958861736 +0000
This commit is contained in:
John Reiser 2000-05-20 22:28:56 +00:00
parent 0421c010cb
commit 0c99a3f72a

View File

@ -184,11 +184,13 @@ void upx_main(
f_expand *const f_decompress f_expand *const f_decompress
) )
{ {
#define PAGE_MASK (~0<<12)
// file descriptors // file descriptors
int fdi, fdo; int fdi, fdo;
Elf32_Phdr const *const phdr = (Elf32_Phdr const *) Elf32_Phdr const *const phdr = (Elf32_Phdr const *)
(my_ehdr->e_phoff + (char const *)my_ehdr); (my_ehdr->e_phoff + (char const *)my_ehdr);
struct Extent xi = { phdr[1].p_memsz, (char *)phdr[1].p_vaddr }; struct Extent xi = { phdr[1].p_memsz, (char *)phdr[1].p_vaddr };
char *next_unmap = (char *)(PAGE_MASK & (unsigned)xi.buf);
struct p_info header; struct p_info header;
// for getpid() // for getpid()
@ -384,6 +386,11 @@ void upx_main(
(void) exit(127); (void) exit(127);
} }
header.p_filesize -= h.sz_unc; header.p_filesize -= h.sz_unc;
// We will never touch these pages again.
i = (PAGE_MASK & (unsigned)xi.buf) - (unsigned)next_unmap;
munmap(next_unmap, i);
next_unmap += i;
} }