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 <jeff.lasslett@xxxxxxxxx> --- 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 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html