luci-base: fix empty reply format in ubus gateway fallback code
authorJo-Philipp Wich <jo@mein.io>
Thu, 3 Nov 2022 10:27:52 +0000 (11:27 +0100)
committerJo-Philipp Wich <jo@mein.io>
Thu, 3 Nov 2022 10:27:52 +0000 (11:27 +0100)
The ubus gateway fallback code incorrectly formatted ubus replies
containing no payload data when forwarding them via HTTP, leading
to `TypeError: Unexpected reply data format` errors in at least
the `luci.fs` class when receiving replies without payload.

Fix this issue by ensuring that the result array never contains
a `null` value for the payload, send an one-element array containing
just the status code in this case instead.

Fixes: #6074
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
modules/luci-base/ucode/controller/admin/index.uc

index 16a74abc46a7b9e73438608c06876a0caa743807..f0f7c7fd4dab010bc2c6b3edba7a2b035fe92d0d 100644 (file)
@@ -23,8 +23,10 @@ function ubus_reply(id, data, code, errmsg) {
                reply.error = { code, message: errmsg };
        else if (type(code) == 'object')
                reply.result = code;
-       else
+       else if (data != null)
                reply.result = [ code, data ];
+       else
+               reply.result = [ code ];
 
        return reply;
 }