summaryrefslogtreecommitdiff
path: root/channels/chan_sip.c
diff options
context:
space:
mode:
authorKinsey Moore <kmoore@digium.com>2011-11-14 15:11:09 +0000
committerKinsey Moore <kmoore@digium.com>2011-11-14 15:11:09 +0000
commit818ac23b928497b2550127d7743bd9d362c5a8c4 (patch)
treed1338647d28740c50767609b35e88887e0f9f421 /channels/chan_sip.c
parentf436a6f27ce27eae8f832e975a9554cc7eaab566 (diff)
Ensure that a null vmexten does not cause a segfault
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
Diffstat (limited to 'channels/chan_sip.c')
-rw-r--r--channels/chan_sip.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 8d531c4a9..fa6b6ea4c 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -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);