summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2018-07-12 11:44:57 +0200
committerDaniel Stenberg <daniel@haxx.se>2018-07-12 14:47:11 +0200
commit5b511b0958f06f72c99494364cbb8f33c4900dd4 (patch)
treea223591a6bf1fc61d152516b31f6c0f72e8678cf
parent2c33105dbf146c78a9a9db6867d0644838e92856 (diff)
downloadcurl-5b511b0958f06f72c99494364cbb8f33c4900dd4.tar.gz
smb: fix memory-leak in URL parse error path
Detected by OSS-Fuzz Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9369 Closes #2740
-rw-r--r--lib/smb.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/lib/smb.c b/lib/smb.c
index 9ac61505c..fad636252 100644
--- a/lib/smb.c
+++ b/lib/smb.c
@@ -969,11 +969,9 @@ static CURLcode smb_parse_url_path(struct connectdata *conn)
/* Parse the path for the share */
req->share = strdup((*path == '/' || *path == '\\') ? path + 1 : path);
- if(!req->share) {
- free(path);
-
+ free(path);
+ if(!req->share)
return CURLE_OUT_OF_MEMORY;
- }
slash = strchr(req->share, '/');
if(!slash)
@@ -981,8 +979,7 @@ static CURLcode smb_parse_url_path(struct connectdata *conn)
/* The share must be present */
if(!slash) {
- free(path);
-
+ Curl_safefree(req->share);
return CURLE_URL_MALFORMAT;
}
@@ -995,8 +992,6 @@ static CURLcode smb_parse_url_path(struct connectdata *conn)
*slash = '\\';
}
- free(path);
-
return CURLE_OK;
}