aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sharkd_session.c5
-rw-r--r--tshark.c5
-rw-r--r--ui/qt/main_window_slots.cpp5
-rw-r--r--ui/ssl_key_export.c3
-rw-r--r--ui/ssl_key_export.h4
5 files changed, 14 insertions, 8 deletions
diff --git a/sharkd_session.c b/sharkd_session.c
index 9451c645a0..6684136599 100644
--- a/sharkd_session.c
+++ b/sharkd_session.c
@@ -4077,7 +4077,8 @@ sharkd_session_process_download(char *buf, const jsmntok_t *tokens, int count)
}
else if (!strcmp(tok_token, "ssl-secrets"))
{
- char *str = ssl_export_sessions();
+ gsize str_len;
+ char *str = ssl_export_sessions(&str_len);
if (str)
{
@@ -4087,7 +4088,7 @@ sharkd_session_process_download(char *buf, const jsmntok_t *tokens, int count)
json_dumper_begin_object(&dumper);
sharkd_json_value_string("file", filename);
sharkd_json_value_string("mime", mime);
- sharkd_json_value_base64("data", str, strlen(str));
+ sharkd_json_value_base64("data", str, str_len);
json_dumper_end_object(&dumper);
json_dumper_finish(&dumper);
}
diff --git a/tshark.c b/tshark.c
index b8a5492c01..fddb346c65 100644
--- a/tshark.c
+++ b/tshark.c
@@ -2330,8 +2330,9 @@ main(int argc, char *argv[])
draw_tap_listeners(TRUE);
if (tls_session_keys_file) {
- gchar *keylist = ssl_export_sessions();
- write_file_binary_mode(tls_session_keys_file, keylist, strlen(keylist));
+ gsize keylist_length;
+ gchar *keylist = ssl_export_sessions(&keylist_length);
+ write_file_binary_mode(tls_session_keys_file, keylist, keylist_length);
g_free(keylist);
}
diff --git a/ui/qt/main_window_slots.cpp b/ui/qt/main_window_slots.cpp
index f1cf8b7ab2..1c6d945808 100644
--- a/ui/qt/main_window_slots.cpp
+++ b/ui/qt/main_window_slots.cpp
@@ -1856,8 +1856,9 @@ void MainWindow::on_actionFileExportTLSSessionKeys_triggered()
tr("TLS Session Keys (*.keys *.txt);;All Files (" ALL_FILES_WILDCARD ")")
);
if (file_name.length() > 0) {
- gchar *keylist = ssl_export_sessions();
- write_file_binary_mode(qUtf8Printable(file_name), keylist, strlen(keylist));
+ gsize keylist_length;
+ gchar *keylist = ssl_export_sessions(&keylist_length);
+ write_file_binary_mode(qUtf8Printable(file_name), keylist, keylist_length);
/* Save the directory name for future file dialogs. */
wsApp->setLastOpenDir(file_name);
diff --git a/ui/ssl_key_export.c b/ui/ssl_key_export.c
index 3177104750..6cc2b0743b 100644
--- a/ui/ssl_key_export.c
+++ b/ui/ssl_key_export.c
@@ -74,7 +74,7 @@ ssl_export_client_randoms_func(gpointer key, gpointer value, gpointer user_data)
}
gchar*
-ssl_export_sessions(void)
+ssl_export_sessions(gsize *length)
{
/* Output format is:
* "RSA Session-ID:xxxx Master-Key:yyyy\n"
@@ -98,5 +98,6 @@ ssl_export_sessions(void)
g_hash_table_foreach(ssl_session_hash, ssl_export_sessions_func, (gpointer)keylist);
g_hash_table_foreach(ssl_crandom_hash, ssl_export_client_randoms_func, (gpointer)keylist);
+ *length = keylist->len;
return g_string_free(keylist, FALSE);
}
diff --git a/ui/ssl_key_export.h b/ui/ssl_key_export.h
index 7bfaee3758..d6eece7075 100644
--- a/ui/ssl_key_export.h
+++ b/ui/ssl_key_export.h
@@ -25,10 +25,12 @@ extern int ssl_session_key_count(void);
/** Dump our SSL Session Keys to a string
*
+ * @param[out] length Length of returned string.
+ *
* @return A string containing all the SSL Session Keys. Must be freed with
* g_free().
*/
-extern gchar* ssl_export_sessions(void);
+extern gchar* ssl_export_sessions(gsize *length);
#ifdef __cplusplus
}