diff --git a/fastboot/bootimg_utils.cpp b/fastboot/bootimg_utils.cpp index 6ba751a7d..d2056aa41 100644 --- a/fastboot/bootimg_utils.cpp +++ b/fastboot/bootimg_utils.cpp @@ -47,9 +47,9 @@ void bootimg_set_cmdline(boot_img_hdr_v2* h, const std::string& cmdline) { strcpy(reinterpret_cast(h->cmdline), cmdline.c_str()); } -static boot_img_hdr_v3* mkbootimg_v3_and_above(const std::vector& kernel, - const std::vector& ramdisk, - const boot_img_hdr_v2& src, std::vector* out) { +static void mkbootimg_v3_and_above(const std::vector& kernel, + const std::vector& ramdisk, const boot_img_hdr_v2& src, + std::vector* out) { #define V3_PAGE_SIZE 4096 const size_t page_mask = V3_PAGE_SIZE - 1; int64_t kernel_actual = (kernel.size() + page_mask) & (~page_mask); @@ -74,20 +74,18 @@ static boot_img_hdr_v3* mkbootimg_v3_and_above(const std::vector& kernel, memcpy(hdr->magic + V3_PAGE_SIZE, kernel.data(), kernel.size()); memcpy(hdr->magic + V3_PAGE_SIZE + kernel_actual, ramdisk.data(), ramdisk.size()); - - return hdr; } -boot_img_hdr_v2* mkbootimg(const std::vector& kernel, const std::vector& ramdisk, - const std::vector& second, const std::vector& dtb, - size_t base, const boot_img_hdr_v2& src, std::vector* out) { +void mkbootimg(const std::vector& kernel, const std::vector& ramdisk, + const std::vector& second, const std::vector& dtb, size_t base, + const boot_img_hdr_v2& src, std::vector* out) { if (src.header_version >= 3) { if (!second.empty() || !dtb.empty()) { die("Second stage bootloader and dtb not supported in v%d boot image\n", src.header_version); } - return reinterpret_cast( - mkbootimg_v3_and_above(kernel, ramdisk, src, out)); + mkbootimg_v3_and_above(kernel, ramdisk, src, out); + return; } const size_t page_mask = src.page_size - 1; @@ -129,5 +127,4 @@ boot_img_hdr_v2* mkbootimg(const std::vector& kernel, const std::vectormagic + hdr->page_size + kernel_actual + ramdisk_actual + second_actual, dtb.data(), dtb.size()); - return hdr; } diff --git a/fastboot/bootimg_utils.h b/fastboot/bootimg_utils.h index b7cf9bd90..0eb003d2f 100644 --- a/fastboot/bootimg_utils.h +++ b/fastboot/bootimg_utils.h @@ -35,7 +35,8 @@ #include #include -boot_img_hdr_v2* mkbootimg(const std::vector& kernel, const std::vector& ramdisk, - const std::vector& second, const std::vector& dtb, - size_t base, const boot_img_hdr_v2& src, std::vector* out); +void mkbootimg(const std::vector& kernel, const std::vector& ramdisk, + const std::vector& second, const std::vector& dtb, size_t base, + const boot_img_hdr_v2& src, std::vector* out); + void bootimg_set_cmdline(boot_img_hdr_v2* h, const std::string& cmdline); diff --git a/fastboot/fastboot.cpp b/fastboot/fastboot.cpp index f720ddaa4..c946ba95e 100644 --- a/fastboot/fastboot.cpp +++ b/fastboot/fastboot.cpp @@ -523,10 +523,12 @@ static std::vector LoadBootableImage(const std::string& kernel, const std: fprintf(stderr,"creating boot image...\n"); std::vector out; - boot_img_hdr_v2* boot_image_data = mkbootimg(kernel_data, ramdisk_data, second_stage_data, - dtb_data, g_base_addr, g_boot_img_hdr, &out); + mkbootimg(kernel_data, ramdisk_data, second_stage_data, dtb_data, g_base_addr, g_boot_img_hdr, + &out); - if (!g_cmdline.empty()) bootimg_set_cmdline(boot_image_data, g_cmdline); + if (!g_cmdline.empty()) { + bootimg_set_cmdline(reinterpret_cast(out.data()), g_cmdline); + } fprintf(stderr, "creating boot image - %zu bytes\n", out.size()); return out; }