Ensure that a null vmexten does not cause a segfault
authorKinsey Moore <kmoore@digium.com>
Mon, 14 Nov 2011 15:11:09 +0000 (15:11 +0000)
committerKinsey Moore <kmoore@digium.com>
Mon, 14 Nov 2011 15:11:09 +0000 (15:11 +0000)
When sip_send_mwi_to_peer was modified recently to avoid deadlocks, vmexten
was not expected to be null.  This change handles that situation to avoid
a segfault.
........

Merged revisions 345063 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 345064 from http://svn.asterisk.org/svn/asterisk/branches/10

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@345065 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_sip.c

index 8d531c4..fa6b6ea 100644 (file)
@@ -26001,11 +26001,13 @@ static int sip_send_mwi_to_peer(struct sip_peer *peer, int cache_only)
        /* Called with peerl lock, but releases it */
        struct sip_pvt *p;
        int newmsgs = 0, oldmsgs = 0;
-       const char *vmexten;
+       const char *vmexten = NULL;
 
        ao2_lock(peer);
 
-       vmexten = ast_strdupa(peer->vmexten);
+       if (peer->vmexten) {
+               vmexten = ast_strdupa(peer->vmexten);
+       }
 
        if (ast_test_flag((&peer->flags[1]), SIP_PAGE2_SUBSCRIBEMWIONLY) && !peer->mwipvt) {
                ao2_unlock(peer);