diff options
author | Peter Wu <peter@lekensteyn.nl> | 2015-10-07 14:24:56 +0200 |
---|---|---|
committer | Peter Wu <peter@lekensteyn.nl> | 2015-10-09 14:35:41 +0000 |
commit | a7ab4af2ab4db5d5fdd5d489bf6b4171a8b1b8d9 (patch) | |
tree | 8514746965e6d6f5865555d323d2fae3039c9a9b /epan/crypt | |
parent | 3dd7e69ed7c72594f676396be822d35b130ab2e6 (diff) |
airpdcap: add free_key_string function, fix memleaks
Do not leak the key and SSID. Note that there are still some leaks in
the GTK UI related to get_wireshark_keys(), but I did not track them
down.
Caught by LeakSanitizer.
Change-Id: I639166e6ea457605d6ae0ebd58e56d7594a7b7db
Reviewed-on: https://code.wireshark.org/review/10860
Petri-Dish: Peter Wu <peter@lekensteyn.nl>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Michael Mann <mmann78@netscape.net>
Reviewed-by: Peter Wu <peter@lekensteyn.nl>
Diffstat (limited to 'epan/crypt')
-rw-r--r-- | epan/crypt/airpdcap.c | 10 | ||||
-rw-r--r-- | epan/crypt/airpdcap_user.h | 11 |
2 files changed, 20 insertions, 1 deletions
diff --git a/epan/crypt/airpdcap.c b/epan/crypt/airpdcap.c index 14ea621ba1..a5cc0fdf4e 100644 --- a/epan/crypt/airpdcap.c +++ b/epan/crypt/airpdcap.c @@ -1968,6 +1968,16 @@ parse_key_string(gchar* input_string, guint8 key_type) return NULL; } +void +free_key_string(decryption_key_t *dk) +{ + if (dk->key) + g_string_free(dk->key, TRUE); + if (dk->ssid) + g_byte_array_free(dk->ssid, TRUE); + g_free(dk); +} + /* * Returns a newly allocated string representing the given decryption_key_t * struct, or NULL if something is wrong... diff --git a/epan/crypt/airpdcap_user.h b/epan/crypt/airpdcap_user.h index d2ac85dd9b..aeca3f08c4 100644 --- a/epan/crypt/airpdcap_user.h +++ b/epan/crypt/airpdcap_user.h @@ -211,7 +211,7 @@ typedef struct _AIRPDCAP_KEYS_COLLECTION { * - AIRPDCAP_KEY_TYPE_WPA_PSK (WPA + 256-bit raw key) * @return A pointer to a freshly-g_malloc()ed decryption_key_t struct on * success, or NULL on failure. - * @see get_key_string() + * @see get_key_string(), free_key_string() */ WS_DLL_PUBLIC decryption_key_t* @@ -228,6 +228,15 @@ WS_DLL_PUBLIC gchar* get_key_string(decryption_key_t* dk); +/** + * Releases memory associated with a given decryption_key_t struct. + * @param dk [IN] Pointer to the key to be freed + * @see parse_key_string() + */ +WS_DLL_PUBLIC +void +free_key_string(decryption_key_t *dk); + /******************************************************************************/ #endif /* _AIRPDCAP_USER_H */ |