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.
This commit is contained in:
Stig Bjørlykke 2021-06-07 08:59:02 +02:00
parent 5dbaa8d3b2
commit 68e360bf04
5 changed files with 14 additions and 8 deletions

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);

View File

@ -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);
}

View File

@ -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
}