Issue #67: support boot/vendor_boot headerVersion downgrade from 4 to 3

boot: correct header size, trim bootSignature
vendor_boot: correct header size, trim vrt
pull/80/head
cfig 4 years ago
parent 041a12606f
commit 6c07824ca4
No known key found for this signature in database
GPG Key ID: B104C307F0FDABB7

@ -72,6 +72,22 @@ class BootHeaderV3(
)
}
fun feature67(): BootHeaderV3 {
val newHeaderSize = when (headerVersion) {
3 -> BOOT_IMAGE_HEADER_V3_SIZE
else -> BOOT_IMAGE_HEADER_V4_SIZE
}
if (newHeaderSize != headerSize) {
log.warn("wrong headerSize, fixed.($headerSize -> $newHeaderSize)")
headerSize = newHeaderSize
}
if (signatureSize != 0 && headerVersion == 3) {
log.warn("trim bootSignature for headerVersion=3")
signatureSize = 0
}
return this
}
override fun toString(): String {
return "BootImgHeaderV3(kernelSize=$kernelSize, ramdiskSize=$ramdiskSize, osVersion=$osVersion, osPatchLevel=$osPatchLevel, headerSize=$headerSize, headerVersion=$headerVersion, cmdline='$cmdline')"
}

@ -187,7 +187,7 @@ data class BootV3(
headerSize = info.headerSize,
cmdline = info.cmdline,
signatureSize = info.signatureSize
)
).feature67()
}
fun extractImages(): BootV3 {

@ -307,7 +307,7 @@ data class VendorBoot(
vrtEntryNum = ramdisk_table.ramdidks.size,
vrtEntrySize = ramdisk_table.eachEntrySize,
bootconfigSize = File(bootconfig.file).length().toInt()
)
).feature67()
}
fun extractImages(): VendorBoot {

@ -70,6 +70,26 @@ class VendorBootHeader(
}
}
// https://github.com/cfig/Android_boot_image_editor/issues/67
// support vendor_boot headerVersion downgrade from 4 to 3 during re-pack
fun feature67(): VendorBootHeader {
val newHeaderSize = when (this.headerVersion) {
3 -> VendorBootHeader.VENDOR_BOOT_IMAGE_HEADER_V3_SIZE
else -> VendorBootHeader.VENDOR_BOOT_IMAGE_HEADER_V4_SIZE
}
if (newHeaderSize != headerSize) {
log.warn("wrong headerSize, fixed.($headerSize -> $newHeaderSize)")
headerSize = newHeaderSize
}
if (vrtSize != 0 && headerVersion == 3) {
log.warn("trim vrt for headerVersion=3")
vrtSize = 0
vrtEntryNum = 0
vrtEntrySize = 0
}
return this
}
fun encode(): ByteArray {
return Struct3(FORMAT_STRING).pack(
magic,

Loading…
Cancel
Save