summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPetr Štetiar2020-01-03 00:26:50 +0000
committerPetr Štetiar2020-01-05 10:47:03 +0000
commit9814807bd71cba074a23707c32d163b560b551cf (patch)
tree9611a8af322aaac2d45af8666776ea87a71c23f1
parentc7a2db3c1eb66080a1520a5748493cc0b55fac93 (diff)
downloadprocd-9814807bd71cba074a23707c32d163b560b551cf.tar.gz
system: sysupgrade: fix possibly misleading error
Fix possibly misleading error "Firmware image is broken and cannot be installed" which could be produced by JSON without expected validation variables, where "Validation script provided invalid input" error message makes more sense. Cc: Rafał Miłecki <rafal@milecki.pl> Tested-by: Kuan-Yi Li <kyli@abysm.org> Signed-off-by: Petr Štetiar <ynezz@true.cz>
-rw-r--r--system.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/system.c b/system.c
index ffd8f71..0736ec9 100644
--- a/system.c
+++ b/system.c
@@ -672,6 +672,12 @@ static int sysupgrade(struct ubus_context *ctx, struct ubus_object *obj,
blobmsg_parse(validation_policy, __VALIDATION_MAX, validation, blob_data(b.head), blob_len(b.head));
+ if (!validation[VALIDATION_VALID] || !validation[VALIDATION_FORCEABLE] ||
+ !validation[VALIDATION_ALLOW_BACKUP]) {
+ sysupgrade_error(ctx, req, "Validation script provided invalid input");
+ return UBUS_STATUS_INVALID_ARGUMENT;
+ }
+
valid = validation[VALIDATION_VALID] && blobmsg_get_bool(validation[VALIDATION_VALID]);
forceable = validation[VALIDATION_FORCEABLE] && blobmsg_get_bool(validation[VALIDATION_FORCEABLE]);
allow_backup = validation[VALIDATION_ALLOW_BACKUP] && blobmsg_get_bool(validation[VALIDATION_ALLOW_BACKUP]);