| #!/bin/sh |
| |
| . /lib/functions.sh |
| . /lib/functions/system.sh |
| . /usr/share/libubox/jshn.sh |
| |
| include /lib/upgrade |
| |
| VALID=1 |
| FORCEABLE=1 |
| ALLOW_BACKUP=1 |
| |
| # Mark image as invalid but still possible to install |
| notify_firmware_invalid() { |
| VALID=0 |
| } |
| |
| # Mark image as broken (impossible to install) |
| notify_firmware_broken() { |
| VALID=0 |
| FORCEABLE=0 |
| } |
| |
| # Mark image as incompatible with preserving a backup |
| notify_firmware_no_backup() { |
| ALLOW_BACKUP=0 |
| } |
| |
| # Add result of validation test |
| notify_firmware_test_result() { |
| local old_ns |
| |
| json_set_namespace validate_firmware_image old_ns |
| json_add_boolean "$1" "$2" |
| json_set_namespace $old_ns |
| } |
| |
| err_to_bool() { |
| [ "$1" -ne 0 ] && echo 0 || echo 1 |
| } |
| |
| fwtool_check_signature "$1" >&2 |
| FWTOOL_SIGNATURE=$? |
| [ "$FWTOOL_SIGNATURE" -ne 0 ] && notify_firmware_invalid |
| |
| fwtool_check_image "$1" >&2 |
| FWTOOL_DEVICE_MATCH=$? |
| [ "$FWTOOL_DEVICE_MATCH" -ne 0 ] && notify_firmware_invalid |
| |
| json_set_namespace validate_firmware_image old_ns |
| json_init |
| json_add_object "tests" |
| json_add_boolean fwtool_signature "$(err_to_bool $FWTOOL_SIGNATURE)" |
| json_add_boolean fwtool_device_match "$(err_to_bool $FWTOOL_DEVICE_MATCH)" |
| |
| # 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 |
| json_set_namespace validate_firmware_image old_ns |
| json_close_object |
| json_add_boolean valid "$VALID" |
| json_add_boolean forceable "$FORCEABLE" |
| json_add_boolean allow_backup "$ALLOW_BACKUP" |
| json_dump -i |
| json_set_namespace $old_ns |