From 227306d95a01d6bb17ed03738473fa1acf03ecff Mon Sep 17 00:00:00 2001 From: SciresM Date: Tue, 1 May 2018 10:13:41 -0700 Subject: [PATCH] Fix errors in elf2kip (#8) --- src/blz.c | 2 +- src/elf2kip.c | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/blz.c b/src/blz.c index 118ff4e..e4eb7c8 100644 --- a/src/blz.c +++ b/src/blz.c @@ -286,7 +286,7 @@ u8 *BLZ_Code(u8 *raw_buffer, int raw_len, u32 *new_len, int best) { *(u32 *)pak = 0; pak += 4; } else { - tmp = (u8 *) Memory(raw_tmp + pak_tmp + 11, sizeof(char)); + tmp = (u8 *) Memory(raw_tmp + pak_tmp + 15, sizeof(char)); for (len = 0; len < raw_tmp; len++) tmp[len] = raw_buffer[len]; diff --git a/src/elf2kip.c b/src/elf2kip.c index 9529343..a4ff553 100644 --- a/src/elf2kip.c +++ b/src/elf2kip.c @@ -460,7 +460,7 @@ int main(int argc, char* argv[]) { KipHeader kip_hdr = {0}; memcpy(kip_hdr.Magic, "KIP1", 4); - kip_hdr.Flags = 0x1F; + kip_hdr.Flags = 0x3F; if (sizeof(KipHeader) != 0x100) { fprintf(stderr, "Bad compile environment!\n"); @@ -538,13 +538,12 @@ int main(int argc, char* argv[]) { } else { kip_hdr.Segments[i].DecompSz = 0; } - kip_hdr.Segments[i].DstOff = phdr->p_vaddr; kip_hdr.Segments[i].CompSz = 0; break; } - FileOffsets[i] = phdr->p_vaddr; - kip_hdr.Segments[i].DecompSz = (phdr->p_filesz + 0xFFF) & ~0xFFF; + FileOffsets[i] = file_off; + kip_hdr.Segments[i].DecompSz = phdr->p_filesz; buf[i] = malloc(kip_hdr.Segments[i].DecompSz); if (buf[i] == NULL) { @@ -556,7 +555,7 @@ int main(int argc, char* argv[]) { memcpy(buf[i], &elf[phdr->p_offset], phdr->p_filesz); cmp[i] = BLZ_Code(buf[i], phdr->p_filesz, &kip_hdr.Segments[i].CompSz, BLZ_BEST); - + file_off += kip_hdr.Segments[i].CompSz; dst_off += kip_hdr.Segments[i].DecompSz; dst_off = (dst_off + 0xFFF) & ~0xFFF; @@ -573,7 +572,7 @@ int main(int argc, char* argv[]) { for (i=0; i<3; i++) { - fseek(out, sizeof(kip_hdr) + kip_hdr.Segments[i].DstOff, SEEK_SET); + fseek(out, sizeof(kip_hdr) + FileOffsets[i], SEEK_SET); fwrite(cmp[i], kip_hdr.Segments[i].CompSz, 1, out); }