[pacman-dev] [PATCH 2/6] Fix delta parsing

Dan McGee dan at archlinux.org
Sat Dec 31 22:07:09 EST 2011


In commit 4c5e7af32f9, we changed this code to use the regex gathered
substrings. However, we failed to correctly store the delta file name
(leaking memory), as well as freeing the temporary string used to hold
the file size string.

Signed-off-by: Dan McGee <dan at archlinux.org>
---

Dave broke it.

 lib/libalpm/delta.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/lib/libalpm/delta.c b/lib/libalpm/delta.c
index 1272558..165cdef 100644
--- a/lib/libalpm/delta.c
+++ b/lib/libalpm/delta.c
@@ -301,7 +301,7 @@ alpm_delta_t *_alpm_delta_parse(char *line)
 
 	/* start at index 1 -- match 0 is the entire match */
 	len = pmatch[1].rm_eo - pmatch[1].rm_so;
-	STRNDUP(tmp, &line[pmatch[1].rm_so], len, return NULL);
+	STRNDUP(delta->delta, &line[pmatch[1].rm_so], len, return NULL);
 
 	len = pmatch[2].rm_eo - pmatch[2].rm_so;
 	STRNDUP(delta->delta_md5, &line[pmatch[2].rm_so], len, return NULL);
@@ -309,6 +309,7 @@ alpm_delta_t *_alpm_delta_parse(char *line)
 	len = pmatch[3].rm_eo - pmatch[3].rm_so;
 	STRNDUP(tmp, &line[pmatch[3].rm_so], len, return NULL);
 	delta->delta_size = _alpm_strtoofft(tmp);
+	free(tmp);
 
 	len = pmatch[4].rm_eo - pmatch[4].rm_so;
 	STRNDUP(delta->from, &line[pmatch[4].rm_so], len, return NULL);
-- 
1.7.8.1



More information about the pacman-dev mailing list