]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
Copy Chargeable-User-Identity in PMKSA caching case
authorJouni Malinen <j@w1.fi>
Sun, 17 Jun 2012 16:51:57 +0000 (19:51 +0300)
committerJouni Malinen <j@w1.fi>
Sun, 17 Jun 2012 16:51:57 +0000 (19:51 +0300)
Maintain a copy of Chargeable-User-Identity in the PMKSA cache to allow
it to be included in accounting messages even if full authentication was
not completed.

Signed-hostap: Jouni Malinen <j@w1.fi>

src/ap/pmksa_cache_auth.c
src/ap/pmksa_cache_auth.h

index 9eb484057978fbf02a226af79b07f4cd408fdb38..ba2c033aa3b18a12653eaef1f4f2463974f226c3 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * hostapd - PMKSA cache for IEEE 802.11i RSN
- * Copyright (c) 2004-2008, Jouni Malinen <j@w1.fi>
+ * Copyright (c) 2004-2008, 2012, Jouni Malinen <j@w1.fi>
  *
  * This software may be distributed under the terms of the BSD license.
  * See README for more details.
@@ -40,6 +40,7 @@ static void _pmksa_cache_free_entry(struct rsn_pmksa_cache_entry *entry)
        if (entry == NULL)
                return;
        os_free(entry->identity);
+       wpabuf_free(entry->cui);
 #ifndef CONFIG_NO_RADIUS
        radius_free_class(&entry->radius_class);
 #endif /* CONFIG_NO_RADIUS */
@@ -136,6 +137,9 @@ static void pmksa_cache_from_eapol_data(struct rsn_pmksa_cache_entry *entry,
                }
        }
 
+       if (eapol->radius_cui)
+               entry->cui = wpabuf_dup(eapol->radius_cui);
+
 #ifndef CONFIG_NO_RADIUS
        radius_copy_class(&entry->radius_class, &eapol->radius_class);
 #endif /* CONFIG_NO_RADIUS */
@@ -163,6 +167,11 @@ void pmksa_cache_to_eapol_data(struct rsn_pmksa_cache_entry *entry,
                                  eapol->identity, eapol->identity_len);
        }
 
+       if (entry->cui) {
+               wpabuf_free(eapol->radius_cui);
+               eapol->radius_cui = wpabuf_dup(entry->cui);
+       }
+
 #ifndef CONFIG_NO_RADIUS
        radius_free_class(&eapol->radius_class);
        radius_copy_class(&eapol->radius_class, &entry->radius_class);
@@ -299,6 +308,8 @@ pmksa_cache_add_okc(struct rsn_pmksa_cache *pmksa,
                                  old_entry->identity_len);
                }
        }
+       if (old_entry->cui)
+               entry->cui = wpabuf_dup(old_entry->cui);
 #ifndef CONFIG_NO_RADIUS
        radius_copy_class(&entry->radius_class, &old_entry->radius_class);
 #endif /* CONFIG_NO_RADIUS */
index 74b73c477a983d273bb2f36bd1dca0e5924df979..d473f3fdced3a4c7bf7476b2666e82df02ad4ce0 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * hostapd - PMKSA cache for IEEE 802.11i RSN
- * Copyright (c) 2004-2008, Jouni Malinen <j@w1.fi>
+ * Copyright (c) 2004-2008, 2012, Jouni Malinen <j@w1.fi>
  *
  * This software may be distributed under the terms of the BSD license.
  * See README for more details.
@@ -25,6 +25,7 @@ struct rsn_pmksa_cache_entry {
 
        u8 *identity;
        size_t identity_len;
+       struct wpabuf *cui;
        struct radius_class_data radius_class;
        u8 eap_type_authsrv;
        int vlan_id;