From 764a7fb71b6cc401ed77233bbcd4d67201f9ca85 Mon Sep 17 00:00:00 2001 From: Steffen Jaeckel Date: Thu, 3 Mar 2022 15:01:40 +0100 Subject: prevent segfault In case we're not connected yet and press Alt+c a segfault occurred since `conn.xmpp_conn` is dereferenced while it's still `NULL`. Signed-off-by: Steffen Jaeckel --- src/tools/editor.c | 3 +++ src/xmpp/connection.c | 12 ++++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/tools/editor.c b/src/tools/editor.c index 10c5c7d4..594e079a 100644 --- a/src/tools/editor.c +++ b/src/tools/editor.c @@ -51,6 +51,9 @@ get_message_from_editor(gchar* message, gchar** returned_message) { // create editor dir if not present char* jid = connection_get_barejid(); + if (!jid) { + return TRUE; + } gchar* path = files_get_account_data_path(DIR_EDITOR, jid); free(jid); if (g_mkdir_with_parents(path, S_IRWXU) != 0) { diff --git a/src/xmpp/connection.c b/src/xmpp/connection.c index c5475258..d601de22 100644 --- a/src/xmpp/connection.c +++ b/src/xmpp/connection.c @@ -747,6 +747,8 @@ connection_get_ctx(void) const char* connection_get_fulljid(void) { + if (!conn.xmpp_conn) + return NULL; const char* jid = xmpp_conn_get_bound_jid(conn.xmpp_conn); if (jid) { return jid; @@ -759,10 +761,11 @@ char* connection_get_barejid(void) { const char* jid = connection_get_fulljid(); - char* result; + if (!jid) + return NULL; Jid* jidp = jid_create(jid); - result = strdup(jidp->barejid); + char* result = strdup(jidp->barejid); jid_destroy(jidp); return result; @@ -772,8 +775,9 @@ char* connection_get_user(void) { const char* jid = connection_get_fulljid(); - char* result; - result = strdup(jid); + if (!jid) + return NULL; + char* result = strdup(jid); char* split = strchr(result, '@'); *split = '\0'; -- cgit 1.4.1-2-gfad0