From 4f8dfc52c6ac5da3cfd83bc6219f3140daff3abd Mon Sep 17 00:00:00 2001 From: yellows8 Date: Mon, 11 Dec 2017 21:54:59 -0500 Subject: [PATCH] Fixed bss handling in elf2nro. --- tools/elf2nro.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/elf2nro.c b/tools/elf2nro.c index 72e56ced..175697c6 100644 --- a/tools/elf2nro.c +++ b/tools/elf2nro.c @@ -112,7 +112,8 @@ int main(int argc, char* argv[]) { for (i=0; i<4; i++) { Elf64_Phdr* phdr = NULL; while (j < hdr->e_phnum) { - Elf64_Phdr* cur = &phdrs[j++]; + Elf64_Phdr* cur = &phdrs[j]; + if (i < 2 || (i==2 && cur->p_type != PT_LOAD)) j++; if (cur->p_type == PT_LOAD || i == 3) { phdr = cur; break; @@ -131,7 +132,7 @@ int main(int argc, char* argv[]) { } nro_hdr.Segments[i].FileOff = phdr->p_vaddr; - nro_hdr.Segments[i].Size = (phdr->p_memsz + 0xFFF) & ~0xFFF; + nro_hdr.Segments[i].Size = (phdr->p_filesz + 0xFFF) & ~0xFFF; buf[i] = malloc(nro_hdr.Segments[i].Size); memset(buf[i], 0, nro_hdr.Segments[i].Size);