[PATCH] Check return value of ftruncate call in http.c. Remove possible mem leak
From: Jeff Lasslett <hidden>
Date: 2016-06-15 22:47:12
Subsystem:
the rest · Maintainer:
Linus Torvalds
From: Jeff Lasslett <hidden>
Date: 2016-06-15 22:47:12
Subsystem:
the rest · Maintainer:
Linus Torvalds
In new_http_object_request(), check ftruncate() call return value and handle possible errors. Remove possible leak of mem pointed to by url. Signed-off-by: Jeff Lasslett <redacted> --- http.c | 12 +++++++++--- 1 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/http.c b/http.c
index a2720d5..34a3a35 100644
--- a/http.c
+++ b/http.c@@ -1098,7 +1098,7 @@ struct http_object_request *new_http_object_request(const char *base_url, char *hex = sha1_to_hex(sha1); char *filename; char prevfile[PATH_MAX]; - char *url; + char *url = NULL; int prevlocal; unsigned char prev_buf[PREV_BUF_SIZE]; ssize_t prev_read = 0;
@@ -1189,7 +1189,11 @@ struct http_object_request *new_http_object_request(const char *base_url, if (prev_posn>0) { prev_posn = 0; lseek(freq->localfile, 0, SEEK_SET); - ftruncate(freq->localfile, 0); + if (ftruncate(freq->localfile, 0) < 0) { + error("Couldn't truncate temporary file %s for %s: %s", + freq->tmpfile, freq->filename, strerror(errno)); + goto abort; + } } }
@@ -1216,10 +1220,12 @@ struct http_object_request *new_http_object_request(const char *base_url, CURLOPT_HTTPHEADER, range_header); } + free(url); return freq; - free(url); abort: + free(url); + free(freq->url); free(filename); free(freq); return NULL;
--
1.6.4.59.g4d590.dirty