Make proactive key caching working again
authorMichael Bernhard <michael.bernhard@bfh.ch>
Sun, 6 Jul 2008 07:50:53 +0000 (10:50 +0300)
committerJouni Malinen <j@w1.fi>
Sun, 6 Jul 2008 07:50:53 +0000 (10:50 +0300)
Function 'wpa_sm_set_config' used the argument 'config' as the network
context which is a pointer to a local variable of the function
'wpa_supplicant_rsn_supp_set_config'.

This is one reason why no proactive key was generated. This network
context never matched with the network context saved in the pmksa cache
entries.

The structure 'rsn_supp_config' has already a member 'network_ctx' which
is now filled in by this patch with 'ssid'.

Signed-off-by: Michael Bernhard <michael.bernhard@bfh.ch>
src/rsn_supp/wpa.c
wpa_supplicant/wpas_glue.c

index d1b93eb..29d900e 100644 (file)
@@ -1993,8 +1993,8 @@ void wpa_sm_set_config(struct wpa_sm *sm, struct rsn_supp_config *config)
        if (!sm)
                return;
 
-       sm->network_ctx = config;
        if (config) {
+               sm->network_ctx = config->network_ctx;
                sm->peerkey_enabled = config->peerkey_enabled;
                sm->allowed_pairwise_cipher = config->allowed_pairwise_cipher;
                sm->proactive_key_caching = config->proactive_key_caching;
@@ -2006,6 +2006,7 @@ void wpa_sm_set_config(struct wpa_sm *sm, struct rsn_supp_config *config)
                } else
                        sm->ssid_len = 0;
        } else {
+               sm->network_ctx = NULL;
                sm->peerkey_enabled = 0;
                sm->allowed_pairwise_cipher = 0;
                sm->proactive_key_caching = 0;
index 913de2c..6efcbdc 100644 (file)
@@ -604,6 +604,7 @@ void wpa_supplicant_rsn_supp_set_config(struct wpa_supplicant *wpa_s,
        struct rsn_supp_config conf;
        if (ssid) {
                os_memset(&conf, 0, sizeof(conf));
+               conf.network_ctx = ssid;
                conf.peerkey_enabled = ssid->peerkey;
                conf.allowed_pairwise_cipher = ssid->pairwise_cipher;
 #ifdef IEEE8021X_EAPOL