@@ -604,6 +604,10 @@ ieee802_1x_kay_move_live_peer(struct ieee802_1x_mka_participant *participant,
break;
}
+ rxsc = ieee802_1x_kay_init_receive_sc(&participant->current_peer_sci, sc_ch);
+ if (!rxsc)
+ return NULL;
+
os_memcpy(&peer->sci, &participant->current_peer_sci,
sizeof(peer->sci));
peer->mn = mn;
@@ -620,10 +624,6 @@ ieee802_1x_kay_move_live_peer(struct ieee802_1x_mka_participant *participant,
secy_get_available_receive_sc(participant->kay, &sc_ch);
- rxsc = ieee802_1x_kay_init_receive_sc(&peer->sci, sc_ch);
- if (!rxsc)
- return NULL;
-
dl_list_add(&participant->rxsc_list, &rxsc->list);
secy_create_receive_sc(participant->kay, rxsc);
If the memory allocation in init_receive_sc fails, we end up in an inconsistent state where the peer is moved to the live peers list and its sci is setup, but we don't have an rxsc. Signed-off-by: Sabrina Dubroca <sd@queasysnail.net> --- src/pae/ieee802_1x_kay.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)