about summary refs log tree commit diff stats
path: root/src/xmpp/presence.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/xmpp/presence.c')
-rw-r--r--src/xmpp/presence.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/xmpp/presence.c b/src/xmpp/presence.c
index a9b07daa..b5cb1803 100644
--- a/src/xmpp/presence.c
+++ b/src/xmpp/presence.c
@@ -747,15 +747,19 @@ _muc_user_self_handler(xmpp_stanza_t* stanza)
             g_slist_free_full(status_codes, free);
         }
     } else {
-        gboolean config_required = stanza_muc_requires_config(stanza);
-        const char* actor = stanza_get_actor(stanza);
-        char* reason = stanza_get_reason(stanza);
         char* nick = from_jid->resourcepart;
+        if (!nick) {
+            log_warning("presence: jid without resource");
+            return;
+        }
+        char* reason = stanza_get_reason(stanza);
         char* show_str = stanza_get_show(stanza, "online");
         char* status_str = stanza_get_status(stanza, NULL);
+        const char* actor = stanza_get_actor(stanza);
         const char* jid = NULL;
         const char* role = NULL;
         const char* affiliation = NULL;
+        gboolean config_required = stanza_muc_requires_config(stanza);
         xmpp_stanza_t* x = xmpp_stanza_get_child_by_ns(stanza, STANZA_NS_MUC_USER);
         if (x) {
             xmpp_stanza_t* item = xmpp_stanza_get_child_by_name(x, STANZA_NAME_ITEM);
@@ -786,6 +790,11 @@ _muc_user_occupant_handler(xmpp_stanza_t* stanza)
     char* nick = from_jid->resourcepart;
     char* status_str = stanza_get_status(stanza, NULL);
 
+    if (!nick) {
+        log_warning("presence: jid without resource");
+        return;
+    }
+
     const char* type = xmpp_stanza_get_type(stanza);
     if (g_strcmp0(type, STANZA_TYPE_UNAVAILABLE) == 0) {