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

http_client: free dumplicated name in case of errors

(cherry picked from commit 39ba53a2499dd1f0e080bb011d7438a60ea5faec)
(cherry picked from commit 7274e353d7c05f5387c64aaf90197c9a8e8d1dd4)
(cherry picked from commit 99852d486bd4180c4f571864bfccda526f3e259d)
Daniel-Constantin Mierla пре 7 месеци
родитељ
комит
0fc84abd57
1 измењених фајлова са 11 додато и 3 уклоњено
  1. 11 3
      src/modules/http_client/curlcon.c

+ 11 - 3
src/modules/http_client/curlcon.c

@@ -582,21 +582,29 @@ int curl_parse_conn(void *param, cfg_parser_t *parser, unsigned int flags)
 				t.start.line, t.start.col);
 		return -1;
 	}
-	pkg_str_dup(&name, &t.val);
+	if(pkg_str_dup(&name, &t.val) < 0) {
+		return -1;
+	}
 	ret = cfg_get_token(&t, parser, 0);
-	if(ret < 0)
+	if(ret < 0) {
+		pkg_free(name.s);
 		return -1;
+	}
 	if((ret > 0) || (t.type != ']')) {
 		LM_ERR("%s:%d:%d: Syntax error, ']' expected\n", parser->file,
 				t.start.line, t.start.col);
+		pkg_free(name.s);
 		return -1;
 	}
 
-	if(cfg_eat_eol(parser, flags))
+	if(cfg_eat_eol(parser, flags)) {
+		pkg_free(name.s);
 		return -1;
+	}
 
 	raw_cc = pkg_malloc(sizeof(raw_http_client_conn_t));
 	if(raw_cc == NULL) {
+		pkg_free(name.s);
 		return -1;
 	}
 	memset(raw_cc, 0, sizeof(raw_http_client_conn_t));