Support unaligned boot image file
Some checks are pending
Magisk Build / Build Magisk artifacts (push) Waiting to run
Magisk Build / Test building on ${{ matrix.os }} (ubuntu-latest) (push) Waiting to run
Magisk Build / Test building on ${{ matrix.os }} (windows-latest) (push) Waiting to run
Magisk Build / Test API ${{ matrix.version }} (x86_64) (, 23) (push) Blocked by required conditions
Magisk Build / Test API ${{ matrix.version }} (x86_64) (, 24) (push) Blocked by required conditions
Magisk Build / Test API ${{ matrix.version }} (x86_64) (, 25) (push) Blocked by required conditions
Magisk Build / Test API ${{ matrix.version }} (x86_64) (, 26) (push) Blocked by required conditions
Magisk Build / Test API ${{ matrix.version }} (x86_64) (, 27) (push) Blocked by required conditions
Magisk Build / Test API ${{ matrix.version }} (x86_64) (, 28) (push) Blocked by required conditions
Magisk Build / Test API ${{ matrix.version }} (x86_64) (, 29) (push) Blocked by required conditions
Magisk Build / Test API ${{ matrix.version }} (x86_64) (, 30) (push) Blocked by required conditions
Magisk Build / Test API ${{ matrix.version }} (x86_64) (, 31) (push) Blocked by required conditions
Magisk Build / Test API ${{ matrix.version }} (x86_64) (, 32) (push) Blocked by required conditions
Magisk Build / Test API ${{ matrix.version }} (x86_64) (, 33) (push) Blocked by required conditions
Magisk Build / Test API ${{ matrix.version }} (x86_64) (, 34) (push) Blocked by required conditions
Magisk Build / Test API ${{ matrix.version }} (x86_64) (google_apis, 35) (push) Blocked by required conditions
Magisk Build / Test API ${{ matrix.version }} (x86) (23) (push) Blocked by required conditions
Magisk Build / Test API ${{ matrix.version }} (x86) (24) (push) Blocked by required conditions
Magisk Build / Test API ${{ matrix.version }} (x86) (25) (push) Blocked by required conditions
Magisk Build / Test API ${{ matrix.version }} (x86) (26) (push) Blocked by required conditions
Magisk Build / Test API ${{ matrix.version }} (x86) (27) (push) Blocked by required conditions
Magisk Build / Test API ${{ matrix.version }} (x86) (28) (push) Blocked by required conditions
Magisk Build / Test API ${{ matrix.version }} (x86) (29) (push) Blocked by required conditions
Magisk Build / Test API ${{ matrix.version }} (x86) (30) (push) Blocked by required conditions
Magisk Build / Test ${{ matrix.device }} (aosp-main, aosp_cf_x86_64_phone) (push) Blocked by required conditions
Magisk Build / Test ${{ matrix.device }} (aosp-main-throttled, aosp_cf_x86_64_phone_pgagnostic) (push) Blocked by required conditions

Fix #7733
This commit is contained in:
topjohnwu 2024-10-06 03:01:08 -07:00
parent 44fb7dbcbe
commit 7188de1205

View File

@ -366,7 +366,7 @@ static const char *vendor_ramdisk_type(int type) {
}
#define assert_off() \
if ((base_addr + off) > (map.buf() + map.sz())) { \
if ((base_addr + off) > (map.buf() + map_end)) { \
fprintf(stderr, "Corrupted boot image!\n"); \
return false; \
}
@ -395,6 +395,7 @@ bool boot_img::parse_image(const uint8_t *p, format_t type) {
hdr->print();
size_t map_end = align_to(map.sz(), getpagesize());
size_t off = hdr->hdr_space();
get_block(kernel);
get_block(ramdisk);
@ -408,7 +409,7 @@ bool boot_img::parse_image(const uint8_t *p, format_t type) {
payload = byte_view(base_addr, off);
auto tail_addr = base_addr + off;
tail = byte_view(tail_addr, map.buf() + map.sz() - tail_addr);
tail = byte_view(tail_addr, map.buf() + map_end - tail_addr);
if (auto size = hdr->kernel_size()) {
if (int dtb_off = find_dtb_offset(kernel, size); dtb_off > 0) {