]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
res_xmpp: Don't crash when trying to send a message without a connection
authorSean Bright <sean.bright@gmail.com>
Wed, 22 Mar 2017 22:32:37 +0000 (18:32 -0400)
committerSean Bright <sean.bright@gmail.com>
Thu, 23 Mar 2017 14:54:20 +0000 (10:54 -0400)
If we never establish a connection to our Jabber server, iksemel never sets up
its internal transport pointer, so attempting to send a message dereferences a
NULL pointer and causes a crash.

ASTERISK-21855 #close
Reported by: Jeremy Kister

Change-Id: I204a568894e4a53ab929783ecc594a000f04d79c

res/res_xmpp.c

index 7af5c43b070ca46224dd9a76eb8c50b9f7eac436..42b3599ab6c7b62dd3c7d02e0823e092e3d42087 100644 (file)
@@ -2564,10 +2564,16 @@ static void xmpp_log_hook(void *data, const char *xmpp, size_t size, int incomin
 static int xmpp_client_send_raw_message(struct ast_xmpp_client *client, const char *message)
 {
        int ret;
-#ifdef HAVE_OPENSSL
-       int len = strlen(message);
 
+       if (client->state == XMPP_STATE_DISCONNECTED) {
+               /* iks_send_raw will crash without a connection */
+               return IKS_NET_NOCONN;
+       }
+
+#ifdef HAVE_OPENSSL
        if (xmpp_is_secure(client)) {
+               int len = strlen(message);
+
                ret = SSL_write(client->ssl_session, message, len);
                if (ret) {
                        /* Log the message here, because iksemel's logHook is