From f66f9f11cd010a05efe28d0607abbf29ff8dffa5 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Wed, 28 Sep 2011 02:56:36 -0500 Subject: Fix memory leak in download payload->remote_name In the sync code, we explicitly allocated a string for this field, while in the dload code itself it was filled in with a pointer to another string. This led to a memory leak in the sync download case. Make remote_name non-const and always explicitly allocate it. This patch ensures this as well as uses malloc + snprintf (rather than calloc) in several codepaths, and eliminates the only use of PATH_MAX in the download code. Signed-off-by: Dan McGee --- lib/libalpm/sync.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/libalpm/sync.c') diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c index b1da6829..fd48ef37 100644 --- a/lib/libalpm/sync.c +++ b/lib/libalpm/sync.c @@ -872,7 +872,7 @@ static int download_files(alpm_handle_t *handle, alpm_list_t **deltas) /* print server + filename into a buffer */ len = strlen(server_url) + strlen(payload->remote_name) + 2; - CALLOC(payload->fileurl, len, sizeof(char), RET_ERR(handle, ALPM_ERR_MEMORY, -1)); + MALLOC(payload->fileurl, len, RET_ERR(handle, ALPM_ERR_MEMORY, -1)); snprintf(payload->fileurl, len, "%s/%s", server_url, payload->remote_name); payload->handle = handle; payload->allow_resume = 1; -- cgit v1.2.3-24-g4f1b