From 7657c279b592b40fc6922122c3c3954b118a0ec7 Mon Sep 17 00:00:00 2001 From: Sean Bright Date: Wed, 22 Mar 2017 18:32:37 -0400 Subject: 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 --- res/res_xmpp.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'res/res_xmpp.c') diff --git a/res/res_xmpp.c b/res/res_xmpp.c index 1aa865cd6..617c401d2 100644 --- a/res/res_xmpp.c +++ b/res/res_xmpp.c @@ -2562,10 +2562,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 -- cgit v1.2.3