mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
Merge branch 'cherry-pick-19736dbe' into 'release/v3.1'
wpa_supplicant: Fix some memleaks and invalid memory access(backport V3.1) See merge request espressif/esp-idf!10032
This commit is contained in:
commit
62c061848f
@ -273,42 +273,40 @@ _out:
|
|||||||
* provisioning, -1 if wps_a is considered more like, or 0 if no preference
|
* provisioning, -1 if wps_a is considered more like, or 0 if no preference
|
||||||
*/
|
*/
|
||||||
int wps_ap_priority_compar(const struct wpabuf *wps_a,
|
int wps_ap_priority_compar(const struct wpabuf *wps_a,
|
||||||
const struct wpabuf *wps_b)
|
const struct wpabuf *wps_b)
|
||||||
{
|
{
|
||||||
struct wps_parse_attr *attr_a, *attr_b;
|
struct wps_parse_attr *attr = NULL;
|
||||||
int sel_a, sel_b;
|
int sel_a, sel_b;
|
||||||
int ret = 0;
|
int ret = 0; /* No preference */
|
||||||
|
|
||||||
attr_a = (struct wps_parse_attr *)os_zalloc(sizeof(struct wps_parse_attr));
|
attr = os_zalloc(sizeof(*attr));
|
||||||
attr_b = (struct wps_parse_attr *)os_zalloc(sizeof(struct wps_parse_attr));
|
|
||||||
|
|
||||||
if (attr_a == NULL || attr_b == NULL) {
|
if (!attr)
|
||||||
ret = 0;
|
return ret;
|
||||||
goto _out;
|
|
||||||
|
if (wps_a == NULL || wps_parse_msg(wps_a, attr) < 0) {
|
||||||
|
ret = 1;
|
||||||
|
goto exit;
|
||||||
}
|
}
|
||||||
|
sel_a = attr->selected_registrar && *(attr->selected_registrar) != 0;
|
||||||
|
|
||||||
if (wps_a == NULL || wps_parse_msg(wps_a, attr_a) < 0)
|
if (wps_b == NULL || wps_parse_msg(wps_b, attr) < 0) {
|
||||||
return 1;
|
ret = -1;
|
||||||
if (wps_b == NULL || wps_parse_msg(wps_b, attr_b) < 0)
|
goto exit;
|
||||||
return -1;
|
}
|
||||||
|
sel_b = attr->selected_registrar && *(attr->selected_registrar) != 0;
|
||||||
sel_a = attr_a->selected_registrar && *attr_a->selected_registrar != 0;
|
|
||||||
sel_b = attr_b->selected_registrar && *attr_b->selected_registrar != 0;
|
|
||||||
|
|
||||||
if (sel_a && !sel_b) {
|
if (sel_a && !sel_b) {
|
||||||
ret = -1;
|
ret = -1;
|
||||||
goto _out;
|
goto exit;
|
||||||
}
|
}
|
||||||
if (!sel_a && sel_b) {
|
if (!sel_a && sel_b) {
|
||||||
ret = 1;
|
ret = 1;
|
||||||
goto _out;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
_out:
|
exit:
|
||||||
if (attr_a)
|
os_free(attr);
|
||||||
os_free(attr_a);
|
|
||||||
if (attr_b)
|
|
||||||
os_free(attr_b);
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1689,6 +1689,7 @@ int wps_build_cred(struct wps_data *wps, struct wpabuf *msg)
|
|||||||
if (random_get_bytes(r, sizeof(r)) < 0)
|
if (random_get_bytes(r, sizeof(r)) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
os_free(wps->new_psk);
|
os_free(wps->new_psk);
|
||||||
|
wps->new_psk = NULL;
|
||||||
//wps->new_psk = base64_encode(r, sizeof(r), &wps->new_psk_len);
|
//wps->new_psk = base64_encode(r, sizeof(r), &wps->new_psk_len);
|
||||||
if (wps->new_psk == NULL)
|
if (wps->new_psk == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
|
Loading…
Reference in New Issue
Block a user