From ffe4cfd5e2558e7e614e9eac3f0de649f960ab28 Mon Sep 17 00:00:00 2001 From: yellows8 Date: Sat, 3 Feb 2018 20:34:35 -0500 Subject: [PATCH] Fixed nro bss handling where bss was 1 page too large. --- src/elf2nro.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/elf2nro.c b/src/elf2nro.c index e637264..42f4f0f 100644 --- a/src/elf2nro.c +++ b/src/elf2nro.c @@ -131,6 +131,7 @@ int main(int argc, char* argv[]) { Elf64_Phdr* phdrs = (Elf64_Phdr*) &elf[hdr->e_phoff]; size_t i, j = 0; size_t file_off = 0; + size_t tmpsize; uint8_t* buf[3]; @@ -152,7 +153,11 @@ int main(int argc, char* argv[]) { // .bss is special if (i == 3) { - nro_hdr.bssSize = ((phdr->p_memsz - phdr->p_filesz) + 0xFFF) & ~0xFFF; + tmpsize = (phdr->p_filesz + 0xFFF) & ~0xFFF; + if ( phdr->p_memsz > tmpsize) + nro_hdr.bssSize = ((phdr->p_memsz - tmpsize) + 0xFFF) & ~0xFFF; + else + nro_hdr.bssSize = 0; break; }