diff options
| author | Felix Fietkau | 2025-05-05 09:38:59 +0000 |
|---|---|---|
| committer | Felix Fietkau | 2025-05-05 11:57:08 +0000 |
| commit | 6fcaf3d589f9cd5c9e5cdf89cc0e651a97175174 (patch) | |
| tree | 654dd65019251aa1827324a39d14b83f7107a6e5 | |
| parent | 55cff42121c8a899a1493fadd7bac667a42f4a90 (diff) | |
| download | openwrt-6fcaf3d589f9cd5c9e5cdf89cc0e651a97175174.tar.gz | |
unetmsg: fix issuing requests without previously subscribing
Perform ACL check if not subscribed. Helps with one-shot requests.
Signed-off-by: Felix Fietkau <nbd@nbd.name>
| -rw-r--r-- | package/network/services/unetmsg/files/usr/share/ucode/unetmsg/unetmsgd-client.uc | 7 | ||||
| -rw-r--r-- | package/network/services/unetmsg/files/usr/share/ucode/unetmsg/unetmsgd.uc | 1 |
2 files changed, 6 insertions, 2 deletions
diff --git a/package/network/services/unetmsg/files/usr/share/ucode/unetmsg/unetmsgd-client.uc b/package/network/services/unetmsg/files/usr/share/ucode/unetmsg/unetmsgd-client.uc index cc971b562b..8b42882152 100644 --- a/package/network/services/unetmsg/files/usr/share/ucode/unetmsg/unetmsgd-client.uc +++ b/package/network/services/unetmsg/files/usr/share/ucode/unetmsg/unetmsgd-client.uc @@ -72,8 +72,11 @@ function client_request(cl, req) return core.handle_message(handle, data, true); case "request": handle = cl.subscribe[name]; - if (!handle) - return libubus.STATUS_INVALID_ARGUMENT; + if (!handle && + !core.acl_check("subscribe", cl.acl, [ name ])) + return libubus.STATUS_PERMISSION_DENIED; + + handle ??= { client: cl.id }; return core.handle_request(handle, req, data, true); } } diff --git a/package/network/services/unetmsg/files/usr/share/ucode/unetmsg/unetmsgd.uc b/package/network/services/unetmsg/files/usr/share/ucode/unetmsg/unetmsgd.uc index 68b0600fe9..393a6ea47a 100644 --- a/package/network/services/unetmsg/files/usr/share/ucode/unetmsg/unetmsgd.uc +++ b/package/network/services/unetmsg/files/usr/share/ucode/unetmsg/unetmsgd.uc @@ -111,6 +111,7 @@ function handle_request(handle, req, data, remote) for (let cur in handles) { if (!cur || !cur.get_channel) { + cb(); continue; } let chan = cur.get_channel(); |