ucode: pass-through `ubus_rpc_session` argument
authorJo-Philipp Wich <jo@mein.io>
Mon, 12 Sep 2022 13:36:14 +0000 (15:36 +0200)
committerJo-Philipp Wich <jo@mein.io>
Mon, 12 Sep 2022 13:36:14 +0000 (15:36 +0200)
Allow the special `ubus_rpc_session` method call argument even if it is not
specified in the policy.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
ucode.c

diff --git a/ucode.c b/ucode.c
index bc070471cc213d8a24b762b6b95b31ebfef74074..e0a7937ffcff80af308798df6235b77418ebf5bf 100644 (file)
--- a/ucode.c
+++ b/ucode.c
@@ -304,8 +304,13 @@ rpc_ucode_validate_call_args(struct ubus_object *obj, const char *ubus_method_na
                }
 
                /* named argument not found in policy */
-               if (!found)
+               if (!found) {
+                       /* allow special ubus_rpc_session argument */
+                       if (!strcmp("ubus_rpc_session", (char *)hdr->name) && blob_id(attr) == BLOBMSG_TYPE_STRING)
+                           continue;
+
                        goto inval;
+               }
        }
 
        *res = rpc_ucode_blob_array_to_ucv(&script->vm, blob_data(msg), blob_len(msg), true);