summaryrefslogtreecommitdiff
path: root/res
diff options
context:
space:
mode:
authorSean Bright <sean.bright@gmail.com>2017-03-22 18:32:37 -0400
committerSean Bright <sean.bright@gmail.com>2017-03-23 10:54:20 -0400
commita487f6fb9724f2a8611aabaab5d05da76179d316 (patch)
tree8622047985474714c0096a8e068a5036beccf9b2 /res
parent90fb1fca41776e4aca48f9ddcc04145ecc62e897 (diff)
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
Diffstat (limited to 'res')
-rw-r--r--res/res_xmpp.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/res/res_xmpp.c b/res/res_xmpp.c
index 7af5c43b0..42b3599ab 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