From e68c1cebd1d87ce60f0646688e437e83081e2322 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Rafa=C5=82=20Mi=C5=82ecki?= Date: Wed, 4 Sep 2019 06:35:31 +0200 Subject: [PATCH] brcm47xx: extend firmware validation MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 --- .../brcm47xx/base-files/lib/upgrade/platform.sh | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) 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 -- 2.25.1