aboutsummaryrefslogtreecommitdiffstats
path: root/epan/crypt
diff options
context:
space:
mode:
authorPeter Wu <peter@lekensteyn.nl>2015-10-07 14:24:56 +0200
committerPeter Wu <peter@lekensteyn.nl>2015-10-09 14:35:41 +0000
commita7ab4af2ab4db5d5fdd5d489bf6b4171a8b1b8d9 (patch)
tree8514746965e6d6f5865555d323d2fae3039c9a9b /epan/crypt
parent3dd7e69ed7c72594f676396be822d35b130ab2e6 (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.c10
-rw-r--r--epan/crypt/airpdcap_user.h11
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 */