don't segfault when peer doesn't send Referred-By (bug #4588)
authorKevin P. Fleming <kpfleming@digium.com>
Wed, 6 Jul 2005 01:45:23 +0000 (01:45 +0000)
committerKevin P. Fleming <kpfleming@digium.com>
Wed, 6 Jul 2005 01:45:23 +0000 (01:45 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6038 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_sip.c

index 6b4e40d..a5091e7 100755 (executable)
@@ -5909,9 +5909,11 @@ static int get_refer_info(struct sip_pvt *sip_pvt, struct sip_request *outgoing_
                referred_by = NULL;
        }
 
-       refer_to += 4;
-       referred_by += 4;
-       
+       if (refer_to)
+               refer_to += 4;
+
+       if (referred_by)
+               referred_by += 4;
        
        if ((ptr = strchr(refer_to, '?'))) {
                /* Search for arguments */
@@ -5982,7 +5984,8 @@ static int get_refer_info(struct sip_pvt *sip_pvt, struct sip_request *outgoing_
                        ast_log(LOG_DEBUG,"Transferred by  (Referred-by: ) %s \n", referred_by);
                ast_log(LOG_DEBUG,"Transfer Contact Info %s (REFER_CONTACT)\n", h_contact);
                ast_copy_string(sip_pvt->refer_to, refer_to, sizeof(sip_pvt->refer_to));
-               ast_copy_string(sip_pvt->referred_by, referred_by, sizeof(sip_pvt->referred_by));
+               if (referred_by)
+                       ast_copy_string(sip_pvt->referred_by, referred_by, sizeof(sip_pvt->referred_by));
                if (h_contact) {
                        ast_copy_string(sip_pvt->refer_contact, h_contact, sizeof(sip_pvt->refer_contact));
                }