Преглед изворни кода

call_control: replaced dynamic str* a local variable

- it was freed afterwards and could leak in case of error hanling
Daniel-Constantin Mierla пре 11 година
родитељ
комит
af81862f59
1 измењених фајлова са 4 додато и 6 уклоњено
  1. 4 6
      modules/call_control/call_control.c

+ 4 - 6
modules/call_control/call_control.c

@@ -244,7 +244,7 @@ int
 parse_param(void *val, AVP_List** avps) {
 
     char *p;
-    str *s, content;
+    str s, content;
     AVP_List *mp = NULL;
 
     //LM_DBG("%.*s\n", content.len, content.s);
@@ -259,8 +259,6 @@ parse_param(void *val, AVP_List** avps) {
     p[content.len] = '\0';
     memcpy(p, content.s, content.len);
 
-    s = (str*) pkg_malloc(sizeof(str));
-    CHECK_ALLOC(s);
 
     for (;*p != '\0';) {
 
@@ -289,10 +287,10 @@ parse_param(void *val, AVP_List** avps) {
         for (; isspace(*p); p++);
         CHECK_COND(*p != '\0' && *p == '$');
 
-        s->s = p;
-        s->len = strlen(p);
+        s.s = p;
+        s.len = strlen(p);
 
-        p = pv_parse_spec(s, mp->pv);
+        p = pv_parse_spec(&s, mp->pv);
 
         for (; isspace(*p); p++);
         *avps = mp;