]> git.ipfire.org Git - thirdparty/git.git/commitdiff
merge-recursive: future-proof update_file_flags() against memory leaks
authorElijah Newren <newren@gmail.com>
Sat, 17 Aug 2019 18:41:26 +0000 (11:41 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 19 Aug 2019 17:08:03 +0000 (10:08 -0700)
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 <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
merge-recursive.c

index 962278161250733194a3033c330515f72ef88fd7..1d4df952e5359a7fce4c24d60df383be3dca6604 100644 (file)
@@ -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);