From c06e0003944cb14b8236d994794c2eabb8fad1d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Wed, 20 Jun 2012 01:41:30 +0200 Subject: [PATCH] odb: don't leak when detecting id ambiguity If we find several objects with the same prefix, we need to free the memory where we stored the earlier object. Keep track of the raw.data pointer across read_prefix calls and free it if we find another object. --- src/odb.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/odb.c b/src/odb.c index a6a18f831..e0c8fa262 100644 --- a/src/odb.c +++ b/src/odb.c @@ -559,6 +559,7 @@ int git_odb_read_prefix( int error = GIT_ENOTFOUND; git_oid found_full_oid = {{0}}; git_rawobj raw; + void *data = NULL; bool found = false; assert(out && db); @@ -588,6 +589,8 @@ int git_odb_read_prefix( if (error) return error; + git__free(data); + data = raw.data; if (found && git_oid_cmp(&full_oid, &found_full_oid)) return git_odb__error_ambiguous("multiple matches for prefix"); found_full_oid = full_oid;