mesh: Fix error path handling for RSN (MGTK init)
wpa_deinit() got called twice if the random_get_bytes() fails to generate the MGTK. This resulted in double-freeing the rsn->auth pointer. Fix this by allowing mesh_rsn_auth_init() handle freeing for all error cases. Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
parent
4d4cdc3bb2
commit
b4c738ec86
1 changed files with 1 additions and 3 deletions
|
@ -167,10 +167,8 @@ static int __mesh_rsn_auth_init(struct mesh_rsn *rsn, const u8 *addr)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TODO: support rekeying */
|
/* TODO: support rekeying */
|
||||||
if (random_get_bytes(rsn->mgtk, 16) < 0) {
|
if (random_get_bytes(rsn->mgtk, 16) < 0)
|
||||||
wpa_deinit(rsn->auth);
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
|
||||||
|
|
||||||
/* group mgmt */
|
/* group mgmt */
|
||||||
wpa_drv_set_key(rsn->wpa_s, WPA_ALG_IGTK, NULL, 4, 1,
|
wpa_drv_set_key(rsn->wpa_s, WPA_ALG_IGTK, NULL, 4, 1,
|
||||||
|
|
Loading…
Reference in a new issue