mka: Fix the order of operations in secure channel deletion

The correct order of deleting a secure channel is to purge all the
secure associations in the channel before actually deleting the secure
channel.

Signed-off-by: Badrish Adiga H R <badrish.adigahr@gmail.com>
This commit is contained in:
Badrish Adiga H R 2017-02-18 05:14:15 -08:00 committed by Jouni Malinen
parent 213eb18851
commit 128f6a98b3

View file

@ -2361,9 +2361,9 @@ static void ieee802_1x_participant_timer(void *eloop_ctx, void *timeout_ctx)
&participant->rxsc_list, &participant->rxsc_list,
struct receive_sc, list) { struct receive_sc, list) {
if (sci_equal(&rxsc->sci, &peer->sci)) { if (sci_equal(&rxsc->sci, &peer->sci)) {
secy_delete_receive_sc(kay, rxsc);
ieee802_1x_kay_deinit_receive_sc( ieee802_1x_kay_deinit_receive_sc(
participant, rxsc); participant, rxsc);
secy_delete_receive_sc(kay, rxsc);
} }
} }
dl_list_del(&peer->list); dl_list_del(&peer->list);
@ -3432,11 +3432,11 @@ ieee802_1x_kay_delete_mka(struct ieee802_1x_kay *kay, struct mka_key_name *ckn)
while (!dl_list_empty(&participant->rxsc_list)) { while (!dl_list_empty(&participant->rxsc_list)) {
rxsc = dl_list_entry(participant->rxsc_list.next, rxsc = dl_list_entry(participant->rxsc_list.next,
struct receive_sc, list); struct receive_sc, list);
secy_delete_receive_sc(kay, rxsc);
ieee802_1x_kay_deinit_receive_sc(participant, rxsc); ieee802_1x_kay_deinit_receive_sc(participant, rxsc);
secy_delete_receive_sc(kay, rxsc);
} }
secy_delete_transmit_sc(kay, participant->txsc);
ieee802_1x_kay_deinit_transmit_sc(participant, participant->txsc); ieee802_1x_kay_deinit_transmit_sc(participant, participant->txsc);
secy_delete_transmit_sc(kay, participant->txsc);
os_memset(&participant->cak, 0, sizeof(participant->cak)); os_memset(&participant->cak, 0, sizeof(participant->cak));
os_memset(&participant->kek, 0, sizeof(participant->kek)); os_memset(&participant->kek, 0, sizeof(participant->kek));