From: Sean Bright Date: Wed, 22 Mar 2017 22:32:37 +0000 (-0400) Subject: res_xmpp: Don't crash when trying to send a message without a connection X-Git-Tag: 14.5.0-rc1~86^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=eed582888f2bace8f1916d39824a07749a836899;p=thirdparty%2Fasterisk.git res_xmpp: Don't crash when trying to send a message without a connection 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 --- diff --git a/res/res_xmpp.c b/res/res_xmpp.c index 32e1dd1ffc..6675ad4751 100644 --- a/res/res_xmpp.c +++ b/res/res_xmpp.c @@ -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