diff --git a/package/base-files/files/sbin/sysupgrade b/package/base-files/files/sbin/sysupgrade index 9b993a72f29..75817d178ae 100755 --- a/package/base-files/files/sbin/sysupgrade +++ b/package/base-files/files/sbin/sysupgrade @@ -384,8 +384,9 @@ json_load "$(/usr/libexec/validate_firmware_image "$IMAGE")" || { exit 1 } json_get_var valid "valid" +json_get_var forceable "forceable" [ "$valid" -eq 0 ] && { - if [ $FORCE -eq 1 ]; then + if [ $FORCE -eq 1 ] && [ "$forceable" -eq 1 ]; then echo "Image check failed but --force given - will update anyway!" >&2 else echo "Image check failed." >&2 diff --git a/package/base-files/files/usr/libexec/validate_firmware_image b/package/base-files/files/usr/libexec/validate_firmware_image index f85fb9e4b43..870d9beda5c 100755 --- a/package/base-files/files/usr/libexec/validate_firmware_image +++ b/package/base-files/files/usr/libexec/validate_firmware_image @@ -56,7 +56,17 @@ json_init # Call platform_check_image() here so it can add its test # results and still mark image properly. json_set_namespace $old_ns - platform_check_image "$1" >&2 || notify_firmware_invalid + platform_check_image "$1" >&2 + case "$?" in + 0) + ;; + 74) + notify_firmware_broken + ;; + *) + notify_firmware_invalid + ;; + esac json_set_namespace validate_firmware_image old_ns json_close_object json_add_boolean valid "$VALID"