Message ID | xmqqcyn112xi.fsf@gitster.g (mailing list archive) |
---|---|
State | Accepted |
Commit | d98d9c77e5d9ac0b0663069e05a512037b9279cf |
Headers | show |
Series | mailmap: plug memory leak in read_mailmap_blob() | expand |
On Thu, Jul 25, 2024 at 04:12:41PM -0700, Junio C Hamano wrote: > When a named object to read mailmap from is not a blob, the code > correctly errors out, but it forgot to free the object data before > doing so. > [..] > - if (type != OBJ_BLOB) > + if (type != OBJ_BLOB) { > + free(buf); > return error("mailmap is not a blob: %s", name); > + } Looks obviously correct. This one is almost certainly my fault. -Peff
diff --git a/mailmap.c b/mailmap.c index 2d0212f444..2acf97f307 100644 --- a/mailmap.c +++ b/mailmap.c @@ -201,8 +201,10 @@ static int read_mailmap_blob(struct string_list *map, const char *name) buf = repo_read_object_file(the_repository, &oid, &type, &size); if (!buf) return error("unable to read mailmap object at %s", name); - if (type != OBJ_BLOB) + if (type != OBJ_BLOB) { + free(buf); return error("mailmap is not a blob: %s", name); + } read_mailmap_string(map, buf); diff --git a/t/t4203-mailmap.sh b/t/t4203-mailmap.sh index 8a88dd7900..79e5f42760 100755 --- a/t/t4203-mailmap.sh +++ b/t/t4203-mailmap.sh @@ -5,6 +5,7 @@ test_description='.mailmap configurations' GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME +TEST_PASSES_SANITIZE_LEAK=true . ./test-lib.sh test_expect_success 'setup commits and contacts file' '
When a named object to read mailmap from is not a blob, the code correctly errors out, but it forgot to free the object data before doing so. Signed-off-by: Junio C Hamano <gitster@pobox.com> --- mailmap.c | 4 +++- t/t4203-mailmap.sh | 1 + 2 files changed, 4 insertions(+), 1 deletion(-)