From: Elijah Newren Date: Sat, 17 Aug 2019 18:41:26 +0000 (-0700) Subject: merge-recursive: future-proof update_file_flags() against memory leaks X-Git-Tag: v2.24.0-rc0~29^2~20 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f836bf393731e141a289f6b82d549cf0a10a2bcc;p=thirdparty%2Fgit.git merge-recursive: future-proof update_file_flags() against memory leaks There is a 'free_buf' label to which all but one of the error paths in update_file_flags() jump; that error case involves a NULL buf and is thus not a memory leak. However, make that error case execute the same deallocation code anyway so that if anyone adds any additional memory allocations or deallocations, then all error paths correctly deallocate resources. Signed-off-by: Elijah Newren Signed-off-by: Junio C Hamano --- diff --git a/merge-recursive.c b/merge-recursive.c index 9622781612..1d4df952e5 100644 --- a/merge-recursive.c +++ b/merge-recursive.c @@ -934,9 +934,11 @@ static int update_file_flags(struct merge_options *opt, } buf = read_object_file(&contents->oid, &type, &size); - if (!buf) - return err(opt, _("cannot read object %s '%s'"), - oid_to_hex(&contents->oid), path); + if (!buf) { + ret = err(opt, _("cannot read object %s '%s'"), + oid_to_hex(&contents->oid), path); + goto free_buf; + } if (type != OBJ_BLOB) { ret = err(opt, _("blob expected for %s '%s'"), oid_to_hex(&contents->oid), path);