From 968e6237bd3f1071e954e3181e3175ec7ab4b64a Mon Sep 17 00:00:00 2001 From: Shaka Huang Date: Sat, 3 Mar 2018 06:57:37 -0600 Subject: [PATCH] Fix error parsing MTK boot.img Should be copy & paste error: 1. boot->r_fmt should be re-checked instead of boot->k_fmt once MTK header was found in ramdisk. 2. ramdisk_size should be restored instead of kernel_size when uncompressed ramdisk was found. 3. Correct header of ramdisk Signed-off-by: Shaka Huang --- native/jni/magiskboot/bootimg.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/native/jni/magiskboot/bootimg.c b/native/jni/magiskboot/bootimg.c index b63138052..c0bdbfd82 100644 --- a/native/jni/magiskboot/bootimg.c +++ b/native/jni/magiskboot/bootimg.c @@ -208,12 +208,12 @@ int parse_img(const char *image, boot_img *boot) { fprintf(stderr, "MTK_RAMDISK_HDR\n"); boot->flags |= MTK_RAMDISK; boot->r_hdr = malloc(sizeof(mtk_hdr)); - memcpy(boot->r_hdr, boot->kernel, sizeof(mtk_hdr)); + memcpy(boot->r_hdr, boot->ramdisk, sizeof(mtk_hdr)); fprintf(stderr, "RAMDISK [%u]\n", boot->r_hdr->size); fprintf(stderr, "NAME [%s]\n", boot->r_hdr->name); boot->ramdisk += 512; lheader(boot, ramdisk_size, -= 512); - boot->k_fmt = check_fmt(boot->ramdisk, header(boot, ramdisk_size)); + boot->r_fmt = check_fmt(boot->ramdisk, header(boot, ramdisk_size)); } char fmt[16]; @@ -341,7 +341,7 @@ void repack(const char* orig_image, const char* out_image) { lheader(&boot, ramdisk_size, = comp(boot.r_fmt, fd, cpio, cpio_size)); munmap(cpio, cpio_size); } else { - lheader(&boot, kernel_size, = restore(KERNEL_FILE, fd)); + lheader(&boot, ramdisk_size, = restore(RAMDISK_FILE, fd)); } file_align(); }