about summary refs log tree commit diff stats
path: root/src/xmpp
diff options
context:
space:
mode:
authorPaul Fariello <paul@fariello.eu>2019-06-21 13:53:46 +0200
committerPaul Fariello <paul@fariello.eu>2019-06-21 16:49:52 +0200
commit45e8467231c50363a4f7879401d523a703362085 (patch)
tree041a14168514eb185d89808ab2be1a0610bc4a33 /src/xmpp
parent4fa5fbaea496a310e9aaa1f0b7170bba8bc95253 (diff)
downloadprofani-tty-45e8467231c50363a4f7879401d523a703362085.tar.gz
Fix a segfault when carbon has no body
Diffstat (limited to 'src/xmpp')
-rw-r--r--src/xmpp/message.c24
1 files changed, 13 insertions, 11 deletions
diff --git a/src/xmpp/message.c b/src/xmpp/message.c
index 55f332b2..09863b63 100644
--- a/src/xmpp/message.c
+++ b/src/xmpp/message.c
@@ -1004,17 +1004,19 @@ _handle_carbons(xmpp_stanza_t *const stanza)
         message->encrypted = xmpp_stanza_get_text(x);
     }
 
-    // if we are the recipient, treat as standard incoming message
-    if (g_strcmp0(my_jid->barejid, jid_to->barejid) == 0) {
-        jid_destroy(jid_to);
-        message->jid = jid_from;
-        sv_ev_incoming_carbon(message);
-
-    // else treat as a sent message
-    } else {
-        jid_destroy(jid_from);
-        message->jid = jid_to;
-        sv_ev_outgoing_carbon(message);
+    if (message->plain || message->encrypted || message->body) {
+        // if we are the recipient, treat as standard incoming message
+        if (g_strcmp0(my_jid->barejid, jid_to->barejid) == 0) {
+            jid_destroy(jid_to);
+            message->jid = jid_from;
+            sv_ev_incoming_carbon(message);
+
+        // else treat as a sent message
+        } else {
+            jid_destroy(jid_from);
+            message->jid = jid_to;
+            sv_ev_outgoing_carbon(message);
+        }
     }
 
     message_free(message);