diff options
Diffstat (limited to 'fastboot/fastboot.cpp')
-rw-r--r-- | fastboot/fastboot.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/fastboot/fastboot.cpp b/fastboot/fastboot.cpp index 6175f59ef..536d64e4c 100644 --- a/fastboot/fastboot.cpp +++ b/fastboot/fastboot.cpp @@ -447,8 +447,11 @@ static void* load_bootable_image(const std::string& kernel, const std::string& r if (kdata == nullptr) die("cannot load '%s': %s", kernel.c_str(), strerror(errno)); // Is this actually a boot image? + if (ksize < static_cast<int64_t>(sizeof(boot_img_hdr))) { + die("cannot load '%s': too short", kernel.c_str()); + } if (!memcmp(kdata, BOOT_MAGIC, BOOT_MAGIC_SIZE)) { - if (cmdline) bootimg_set_cmdline((boot_img_hdr*) kdata, cmdline); + if (cmdline) bootimg_set_cmdline(reinterpret_cast<boot_img_hdr*>(kdata), cmdline); if (!ramdisk.empty()) die("cannot boot a boot.img *and* ramdisk"); |