diff options
author | Rafał Miłecki <rafal@milecki.pl> | 2019-09-04 06:35:31 +0200 |
---|---|---|
committer | Rafał Miłecki <rafal@milecki.pl> | 2019-09-04 06:37:17 +0200 |
commit | e68c1cebd1d87ce60f0646688e437e83081e2322 (patch) | |
tree | b6ca4bac834e68494734ac942d84c35a0e0cfdcb /target/linux/brcm47xx | |
parent | 5287ac2dfbd0393e23e35e415ddf37f42df9b58e (diff) | |
download | upstream-e68c1cebd1d87ce60f0646688e437e83081e2322.tar.gz upstream-e68c1cebd1d87ce60f0646688e437e83081e2322.tar.bz2 upstream-e68c1cebd1d87ce60f0646688e437e83081e2322.zip |
brcm47xx: extend firmware validation
This provides TRX validation result, so final JSON may look like:
{
"tests": {
"fwtool_signature": true,
"fwtool_device_match": true,
"trx_valid": true
},
"valid": true,
"forceable": true
}
It also prevents users from installing broken firmware files, e.g.:
root@OpenWrt:/# sysupgrade -F -n /tmp/TZ
Image metadata not found
Invalid image type. Please use firmware specific for this device.
Image check failed but --force given - will update anyway!
Commencing upgrade. Closing all shell sessions.
Firmware image is broken and cannot be installed
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Diffstat (limited to 'target/linux/brcm47xx')
-rw-r--r-- | target/linux/brcm47xx/base-files/lib/upgrade/platform.sh | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/target/linux/brcm47xx/base-files/lib/upgrade/platform.sh b/target/linux/brcm47xx/base-files/lib/upgrade/platform.sh index dfd4e97ed2..537bac2328 100644 --- a/target/linux/brcm47xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/brcm47xx/base-files/lib/upgrade/platform.sh @@ -98,7 +98,10 @@ platform_check_image() { if ! otrx check "$1" -o "$header_len"; then echo "No valid TRX firmware in the CHK image" + notify_firmware_test_result "trx_valid" 0 error=1 + else + notify_firmware_test_result "trx_valid" 1 fi ;; "cybertan") @@ -113,17 +116,24 @@ platform_check_image() { if ! otrx check "$1" -o 32; then echo "No valid TRX firmware in the CyberTAN image" + notify_firmware_test_result "trx_valid" 0 error=1 + else + notify_firmware_test_result "trx_valid" 1 fi ;; "trx") if ! otrx check "$1"; then echo "Invalid (corrupted?) TRX firmware" + notify_firmware_test_result "trx_valid" 0 error=1 + else + notify_firmware_test_result "trx_valid" 1 fi ;; *) - echo "Invalid image type. Please use only .trx files" + echo "Invalid image type. Please use firmware specific for this device." + notify_firmware_broken error=1 ;; esac |