]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
hostapd: fix memory leak in rrm ubus interface 22553/head
authorVladimir Palevich <palevichva@gmail.com>
Fri, 20 Mar 2026 20:46:04 +0000 (21:46 +0100)
committerNick Hainke <vincent@systemli.org>
Sun, 22 Mar 2026 14:17:05 +0000 (15:17 +0100)
Add missing wpabuf_free calls to the hostapd_rrm_nr_set and
hostapd_rrm_beacon_req functions.

Signed-off-by: Vladimir Palevich <palevichva@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22538
(cherry picked from commit fde5d2e21079d7bcbc9c83fdcc7ef946d37d09dd)
Link: https://github.com/openwrt/openwrt/pull/22553
Signed-off-by: Nick Hainke <vincent@systemli.org>
package/network/services/hostapd/src/src/ap/ubus.c

index c1d68c34ff29a06eb97946afa81b656f693e8d8d..30d22e2d26c5a4c943ca068a27294883d4195542 100644 (file)
@@ -1122,9 +1122,9 @@ hostapd_rrm_nr_set(struct ubus_context *ctx, struct ubus_object *obj,
                if (strlen(s) == 0) {
                        /* Copy BSSID from neighbor report */
                        if (hwaddr_compact_aton(nr_s, bssid))
-                               goto invalid;
+                               goto invalid_free;
                } else if (hwaddr_aton(s, bssid)) {
-                       goto invalid;
+                       goto invalid_free;
                }
 
                /* SSID */
@@ -1135,7 +1135,7 @@ hostapd_rrm_nr_set(struct ubus_context *ctx, struct ubus_object *obj,
                } else {
                        ssid.ssid_len = strlen(s);
                        if (ssid.ssid_len > sizeof(ssid.ssid))
-                               goto invalid;
+                               goto invalid_free;
 
                        memcpy(&ssid, s, ssid.ssid_len);
                }
@@ -1144,6 +1144,8 @@ hostapd_rrm_nr_set(struct ubus_context *ctx, struct ubus_object *obj,
                wpabuf_free(data);
                continue;
 
+invalid_free:
+               wpabuf_free(data);
 invalid:
                return UBUS_STATUS_INVALID_ARGUMENT;
        }
@@ -1232,6 +1234,7 @@ hostapd_rrm_beacon_req(struct ubus_context *ctx, struct ubus_object *obj,
        }
 
        ret = hostapd_send_beacon_req(hapd, addr, 0, req);
+       wpabuf_free(req);
        if (ret < 0)
                return -ret;