From 68e360bf0404e5b5246281ed3ea289907320dd76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stig=20Bj=C3=B8rlykke?= Date: Mon, 7 Jun 2021 08:59:02 +0200 Subject: [PATCH] ui: Return length from ssl_export_sessions() All users of ssl_export_sessions() calculates the length of the returned string, so let's return the length instead. --- sharkd_session.c | 5 +++-- tshark.c | 5 +++-- ui/qt/main_window_slots.cpp | 5 +++-- ui/ssl_key_export.c | 3 ++- ui/ssl_key_export.h | 4 +++- 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 @@ -24,11 +24,13 @@ extern "C" { 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 }