|
@@ -1123,9 +1123,9 @@ hostapd_rrm_nr_set(struct ubus_context *ctx, struct ubus_object *obj,
|
|
|
if (strlen(s) == 0) {
|
|
if (strlen(s) == 0) {
|
|
|
/* Copy BSSID from neighbor report */
|
|
/* Copy BSSID from neighbor report */
|
|
|
if (hwaddr_compact_aton(nr_s, bssid))
|
|
if (hwaddr_compact_aton(nr_s, bssid))
|
|
|
- goto invalid;
|
|
|
|
|
|
|
+ goto invalid_free;
|
|
|
} else if (hwaddr_aton(s, bssid)) {
|
|
} else if (hwaddr_aton(s, bssid)) {
|
|
|
- goto invalid;
|
|
|
|
|
|
|
+ goto invalid_free;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/* SSID */
|
|
/* SSID */
|
|
@@ -1136,7 +1136,7 @@ hostapd_rrm_nr_set(struct ubus_context *ctx, struct ubus_object *obj,
|
|
|
} else {
|
|
} else {
|
|
|
ssid.ssid_len = strlen(s);
|
|
ssid.ssid_len = strlen(s);
|
|
|
if (ssid.ssid_len > sizeof(ssid.ssid))
|
|
if (ssid.ssid_len > sizeof(ssid.ssid))
|
|
|
- goto invalid;
|
|
|
|
|
|
|
+ goto invalid_free;
|
|
|
|
|
|
|
|
memcpy(&ssid, s, ssid.ssid_len);
|
|
memcpy(&ssid, s, ssid.ssid_len);
|
|
|
}
|
|
}
|
|
@@ -1145,6 +1145,8 @@ hostapd_rrm_nr_set(struct ubus_context *ctx, struct ubus_object *obj,
|
|
|
wpabuf_free(data);
|
|
wpabuf_free(data);
|
|
|
continue;
|
|
continue;
|
|
|
|
|
|
|
|
|
|
+invalid_free:
|
|
|
|
|
+ wpabuf_free(data);
|
|
|
invalid:
|
|
invalid:
|
|
|
return UBUS_STATUS_INVALID_ARGUMENT;
|
|
return UBUS_STATUS_INVALID_ARGUMENT;
|
|
|
}
|
|
}
|
|
@@ -1252,6 +1254,7 @@ hostapd_rrm_beacon_req(struct ubus_context *ctx, struct ubus_object *obj,
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
ret = hostapd_send_beacon_req(hapd, addr, 0, req);
|
|
ret = hostapd_send_beacon_req(hapd, addr, 0, req);
|
|
|
|
|
+ wpabuf_free(req);
|
|
|
if (ret < 0)
|
|
if (ret < 0)
|
|
|
return -ret;
|
|
return -ret;
|
|
|
|
|
|