[Freeswitch-svn] [commit] r8614 - in freeswitch/trunk/libs/sofia-sip: . libsofia-sip-ua/sip

Freeswitch SVN mikej at freeswitch.org
Sun May 25 10:57:15 EDT 2008


Author: mikej
Date: Sun May 25 10:57:14 2008
New Revision: 8614

Modified:
   freeswitch/trunk/libs/sofia-sip/.update
   freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sip_tag_class.c

Log:
Tue May 20 09:32:30 EDT 2008  Pekka.Pessi at nokia.com
  * sip_tag_class.c: fixed klocwork issues


Modified: freeswitch/trunk/libs/sofia-sip/.update
==============================================================================
--- freeswitch/trunk/libs/sofia-sip/.update	(original)
+++ freeswitch/trunk/libs/sofia-sip/.update	Sun May 25 10:57:14 2008
@@ -1 +1 @@
-Sun May 25 09:56:21 EDT 2008
+Sun May 25 10:57:08 EDT 2008

Modified: freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sip_tag_class.c
==============================================================================
--- freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sip_tag_class.c	(original)
+++ freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/sip/sip_tag_class.c	Sun May 25 10:57:14 2008
@@ -158,7 +158,8 @@
 			(msg_pub_t *)sip, hc);
 
     /* Is header present in the SIP message? */
-    if ((char *)hh >= ((char *)sip + sip->sip_size) ||
+    if (hh == NULL ||
+	(char *)hh >= ((char *)sip + sip->sip_size) ||
 	(char *)hh < (char *)&sip->sip_request)
       return dst;
 
@@ -234,8 +235,12 @@
 
       if (h == SIP_NONE) {	/* Remove header */
 	hh = msg_hclass_offset(msg_mclass(msg), (msg_pub_t *)sip, hc);
-	while (*hh)
-	  msg_header_remove(msg, (msg_pub_t *)sip, *hh);
+	if (hh != NULL &&
+	    (char *)hh < ((char *)sip + sip->sip_size) &&
+	    (char *)hh >= (char *)&sip->sip_request) {
+	  while (*hh)
+	    msg_header_remove(msg, (msg_pub_t *)sip, *hh);
+	}
 	continue;
       } 
 
@@ -441,18 +446,21 @@
     msg_hclass_t *hc = NULL;
 
     hnv = su_strlst_item(l, i);
-    n = strcspn(hnv, "=");
+    n = hnv ? strcspn(hnv, "=") : 0;
     if (n == 0)
       break;
 
     if (n == 4 && strncasecmp(hnv, "body", 4) == 0)
       t = siptag_payload, hc = sip_payload_class;
-    else for (j = 0; (t = sip_tag_list[j]); j++) {
-      hc = (msg_hclass_t *)sip_tag_list[j]->tt_magic;
-      if (n == 1 && strncasecmp(hnv, hc->hc_short, 1) == 0)
-	break;
-      else if (n == (size_t)hc->hc_len && strncasecmp(hnv, hc->hc_name, n) == 0)
-	break;
+    else {
+      for (j = 0; (t = sip_tag_list[j]); j++) {
+	hc = (msg_hclass_t *)sip_tag_list[j]->tt_magic;
+	if (n == 1 && strncasecmp(hnv, hc->hc_short, 1) == 0)
+	  break;
+	else if (n == (size_t)hc->hc_len &&
+		 strncasecmp(hnv, hc->hc_name, n) == 0)
+	  break;
+      }
     }
 
     value = (char *)hnv + n;



More information about the Freeswitch-svn mailing list