瀏覽代碼

core: clone values for defines

Daniel-Constantin Mierla 3 年之前
父節點
當前提交
1fd075c4e7
共有 1 個文件被更改,包括 10 次插入1 次删除
  1. 10 1
      src/core/cfg.lex

+ 10 - 1
src/core/cfg.lex

@@ -2144,8 +2144,17 @@ int pp_define_set(int len, char *text, int mode)
 		return -1;
 	}
 
+	pp_defines[ppos].value.s = (char*)pkg_malloc(len+1);
+	if (pp_defines[ppos].value.s == NULL) {
+		LM_ERR("no more memory to define %.*s [%d]\n",
+			pp_defines[ppos].name.len,
+			pp_defines[ppos].name.s, ppos);
+		return -1;
+	}
+
+	memcpy(pp_defines[ppos].value.s, text, len);
+	pp_defines[ppos].value.s[len] = '\0';
 	pp_defines[ppos].value.len = len;
-	pp_defines[ppos].value.s = text;
 	LM_DBG("### setting define ID [%.*s] value [%.*s] (mode: %d)\n",
 			pp_defines[ppos].name.len,
 			pp_defines[ppos].name.s,