]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
base-files: allow platform_check_image to prevent --force
authorDaniel Golle <daniel@makrotopia.org>
Sun, 30 Mar 2025 23:32:50 +0000 (00:32 +0100)
committerDaniel Golle <daniel@makrotopia.org>
Mon, 21 Apr 2025 15:12:42 +0000 (16:12 +0100)
Introduce special handling for return code 74 (EBADMSG) of
platform_check_image which will mark the image as broken and hence
not allow the user to override the check using the --force option.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
package/base-files/files/sbin/sysupgrade
package/base-files/files/usr/libexec/validate_firmware_image

index 9b993a72f295d97e8c4ff970fb31f75ea30a9df1..75817d178aea1806ae5466faf50aca39ec662c86 100755 (executable)
@@ -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
index f85fb9e4b4352022a6ddf108e9adabdb8f57ea71..870d9beda5cfaac91c0a33108d5c615ceb82dd07 100755 (executable)
@@ -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"