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 <ra...@milecki.pl>
Signed-off-by: Petr Štetiar <yn...@true.cz>
---
 system.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/system.c b/system.c
index f0198a5b20b8..f4b75276aaf1 100644
--- a/system.c
+++ b/system.c
@@ -671,6 +671,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]);

_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to