git/builtin
Patrick Steinhardt 44ec7c575f merge: fix leaking merge bases
When calling either the recursive or the ORT merge machineries we need
to provide a list of merge bases. The ownership of that parameter is
then implicitly transferred to the callee, which is somewhat fishy.
Furthermore, that list may leak in some cases where the merge machinery
runs into an error, thus causing a memory leak.

Refactor the code such that we stop transferring ownership. Instead, the
merge machinery will now create its own local copies of the passed in
list as required if they need to modify the list. Free the list at the
callsites as required.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-06-11 13:15:08 -07:00
..
add.c Merge branch 'ps/the-index-is-no-more' 2024-05-08 10:18:44 -07:00
am.c commit: fix leaking parents when calling `commit_tree_extended()` 2024-06-11 13:15:07 -07:00
annotate.c
apply.c apply: fix uninitialized hash function 2024-05-21 09:07:48 -07:00
archive.c parse-options: fix leaks for users of OPT_FILENAME 2024-06-11 13:15:04 -07:00
bisect.c cocci: apply rules to rewrite callers of "refs" interfaces 2024-05-07 10:06:59 -07:00
blame.c Merge branch 'ps/leakfixes' into ps/leakfixes-more 2024-06-03 13:08:33 -07:00
branch.c Merge branch 'kn/ref-transaction-symref' 2024-05-20 11:20:04 -07:00
bugreport.c bugreport.c: fix a crash in `git bugreport` with `--no-suffix` option 2024-03-16 09:31:42 -07:00
bundle.c builtin/bundle: abort "verify" early when there is no repository 2024-05-06 22:50:49 -07:00
cat-file.c object-name: free leaking object contexts 2024-06-11 13:15:05 -07:00
check-attr.c builtin: stop using `the_index` 2024-04-18 12:30:42 -07:00
check-ignore.c builtin: stop using `the_index` 2024-04-18 12:30:42 -07:00
check-mailmap.c
check-ref-format.c
checkout--worker.c
checkout-index.c builtin: stop using `the_index` 2024-04-18 12:30:42 -07:00
checkout.c checkout: clarify memory ownership in `unique_tracking_name()` 2024-05-27 11:19:58 -07:00
clean.c builtin: stop using `the_index` 2024-04-18 12:30:42 -07:00
clone.c builtin/clone: plug leaking HEAD ref in `wanted_peer_refs()` 2024-06-11 13:15:07 -07:00
column.c column: disallow negative padding 2024-02-13 10:18:50 -08:00
commit-graph.c Merge branch 'ja/doc-placeholders-fix' 2024-02-08 13:20:34 -08:00
commit-tree.c commit: fix leaking parents when calling `commit_tree_extended()` 2024-06-11 13:15:07 -07:00
commit.c commit: fix leaking parents when calling `commit_tree_extended()` 2024-06-11 13:15:07 -07:00
config.c Merge branch 'ps/leakfixes' into ps/leakfixes-more 2024-06-03 13:08:33 -07:00
count-objects.c
credential-cache--daemon.c Merge branch 'bc/credential-scheme-enhancement' 2024-05-08 10:18:44 -07:00
credential-cache.c Merge branch 'bc/credential-scheme-enhancement' 2024-05-08 10:18:44 -07:00
credential-store.c credential: gate new fields on capability 2024-04-16 22:39:06 -07:00
credential.c builtin/credential: clear credential before exit 2024-05-27 11:20:01 -07:00
describe.c refs: pass repo when peeling objects 2024-05-17 10:33:39 -07:00
diagnose.c
diff-files.c treewide: remove unnecessary includes in source files 2023-12-26 12:04:31 -08:00
diff-index.c treewide: remove unnecessary includes in source files 2023-12-26 12:04:31 -08:00
diff-tree.c builtin: stop using `the_index` 2024-04-18 12:30:42 -07:00
diff.c builtin/diff: explicitly set hash algo when there is no repo 2024-05-06 22:50:49 -07:00
difftool.c builtin/difftool: plug memory leaks in `run_dir_diff()` 2024-06-11 13:15:06 -07:00
fast-export.c use xstrncmpz() 2024-02-12 09:32:41 -08:00
fast-import.c Merge branch 'kn/ref-transaction-symref' 2024-05-20 11:20:04 -07:00
fetch-pack.c
fetch.c Merge branch 'ps/refs-without-the-repository-updates' 2024-05-30 14:15:13 -07:00
fmt-merge-msg.c parse-options: fix leaks for users of OPT_FILENAME 2024-06-11 13:15:04 -07:00
for-each-ref.c ref-filter: properly distinuish pseudo and root refs 2024-05-15 07:30:52 -07:00
for-each-repo.c for-each-repo: optionally keep going on an error 2024-04-24 10:46:03 -07:00
fsck.c cocci: apply rules to rewrite callers of "refs" interfaces 2024-05-07 10:06:59 -07:00
fsmonitor--daemon.c treewide: remove unnecessary includes in source files 2023-12-26 12:04:33 -08:00
gc.c refs: pass repo when peeling objects 2024-05-17 10:33:39 -07:00
get-tar-commit-id.c treewide: remove unnecessary includes in source files 2023-12-26 12:04:31 -08:00
grep.c object-name: free leaking object contexts 2024-06-11 13:15:05 -07:00
hash-object.c builtin/hash-object: fix uninitialized hash function 2024-05-21 09:05:13 -07:00
help.c
hook.c treewide: remove unnecessary includes in source files 2023-12-26 12:04:31 -08:00
index-pack.c unpack: replace xwrite() loop with write_in_full() 2024-03-02 11:12:16 -08:00
init-db.c Sync with 2.40.2 2024-04-19 12:38:42 +02:00
interpret-trailers.c Merge branch 'la/hide-trailer-info' 2024-05-23 11:04:27 -07:00
log.c builtin/log: fix leaking commit list in git-cherry(1) 2024-06-11 13:15:06 -07:00
ls-files.c factor out strbuf_expand_bad_format() 2024-03-25 11:59:24 -07:00
ls-remote.c Merge branch 'en/header-cleanup' 2024-01-08 14:05:15 -08:00
ls-tree.c object-name: free leaking object contexts 2024-06-11 13:15:05 -07:00
mailinfo.c treewide: remove unnecessary includes in source files 2023-12-26 12:04:31 -08:00
mailsplit.c
merge-base.c commit-reach(repo_get_merge_bases_many_dirty): pass on errors 2024-02-29 08:06:01 -08:00
merge-file.c merge-file: add --diff-algorithm option 2023-11-22 14:23:06 +09:00
merge-index.c builtin: stop using `the_index` 2024-04-18 12:30:42 -07:00
merge-ours.c
merge-recursive.c builtin/merge-recursive: fix leaking object ID bases 2024-06-11 13:15:06 -07:00
merge-tree.c merge: fix leaking merge bases 2024-06-11 13:15:08 -07:00
merge.c merge: fix leaking merge bases 2024-06-11 13:15:08 -07:00
mktag.c treewide: remove unnecessary includes in source files 2023-12-26 12:04:33 -08:00
mktree.c
multi-pack-index.c parse-options: fix leaks for users of OPT_FILENAME 2024-06-11 13:15:04 -07:00
mv.c builtin/mv: fix leaks for submodule gitfile paths 2024-05-27 11:20:03 -07:00
name-rev.c cocci: apply rules to rewrite callers of "refs" interfaces 2024-05-07 10:06:59 -07:00
notes.c Merge branch 'kn/ref-transaction-symref' 2024-05-20 11:20:04 -07:00
pack-objects.c Merge branch 'ps/refs-without-the-repository-updates' 2024-05-30 14:15:13 -07:00
pack-redundant.c
pack-refs.c builtin/pack-refs: introduce new "--auto" flag 2024-03-25 09:54:07 -07:00
patch-id.c builtin/patch-id: fix uninitialized hash function 2024-05-21 09:05:13 -07:00
prune-packed.c
prune.c
pull.c Merge branch 'ps/refs-without-the-repository' 2024-05-16 10:10:14 -07:00
push.c Merge branch 'en/header-cleanup' into maint-2.43 2024-02-08 16:22:10 -08:00
range-diff.c treewide: remove unnecessary includes in source files 2023-12-26 12:04:31 -08:00
read-tree.c builtin: stop using `the_index` 2024-04-18 12:30:42 -07:00
rebase.c config: clarify memory ownership in `git_config_string()` 2024-05-27 11:20:00 -07:00
receive-pack.c config: clarify memory ownership in `git_config_string()` 2024-05-27 11:20:00 -07:00
reflog.c refs: remove `dwim_log()` 2024-05-17 10:33:39 -07:00
remote-ext.c
remote-fd.c
remote.c Merge branch 'ps/refs-without-the-repository-updates' 2024-05-30 14:15:13 -07:00
repack.c Merge branch 'ps/leakfixes' into ps/leakfixes-more 2024-06-03 13:08:33 -07:00
replace.c Merge branch 'ps/refs-without-the-repository-updates' 2024-05-30 14:15:13 -07:00
replay.c commit: fix leaking parents when calling `commit_tree_extended()` 2024-06-11 13:15:07 -07:00
rerere.c treewide: remove unnecessary includes in source files 2023-12-26 12:04:31 -08:00
reset.c Merge branch 'ps/refs-without-the-repository' 2024-05-16 10:10:14 -07:00
rev-list.c builtin/rev-list: fix leaking bitmap index when calculating disk usage 2024-06-11 13:15:05 -07:00
rev-parse.c object-name: free leaking object contexts 2024-06-11 13:15:05 -07:00
revert.c cherry-pick: add `--empty` for more robust redundant commit handling 2024-03-25 16:45:41 -07:00
rm.c builtin: stop using `the_index` 2024-04-18 12:30:42 -07:00
send-pack.c Merge branch 'en/header-cleanup' into maint-2.43 2024-02-08 16:22:10 -08:00
shortlog.c revision: free diff options 2024-06-11 13:15:06 -07:00
show-branch.c cocci: apply rules to rewrite callers of "refs" interfaces 2024-05-07 10:06:59 -07:00
show-index.c
show-ref.c refs: pass repo when peeling objects 2024-05-17 10:33:39 -07:00
sparse-checkout.c parse-options: fix leaks for users of OPT_FILENAME 2024-06-11 13:15:04 -07:00
stash.c commit: fix leaking parents when calling `commit_tree_extended()` 2024-06-11 13:15:07 -07:00
stripspace.c strbuf: accept a comment string for strbuf_add_commented_lines() 2024-03-12 13:28:10 -07:00
submodule--helper.c refs: refactor `resolve_gitlink_ref()` to accept a repository 2024-05-17 10:33:38 -07:00
symbolic-ref.c Merge branch 'kn/ref-transaction-symref' 2024-05-20 11:20:04 -07:00
tag.c Merge branch 'kn/ref-transaction-symref' 2024-05-20 11:20:04 -07:00
unpack-file.c
unpack-objects.c unpack: replace xwrite() loop with write_in_full() 2024-03-02 11:12:16 -08:00
update-index.c refs: refactor `resolve_gitlink_ref()` to accept a repository 2024-05-17 10:33:38 -07:00
update-ref.c Merge branch 'kn/ref-transaction-symref' 2024-05-20 11:20:04 -07:00
update-server-info.c
upload-archive.c
upload-pack.c Sync with 2.44.1 2024-04-29 20:42:30 +02:00
var.c refs: drop `git_default_branch_name()` 2024-05-17 10:33:39 -07:00
verify-commit.c treewide: remove unnecessary includes in source files 2023-12-26 12:04:31 -08:00
verify-pack.c
verify-tag.c treewide: remove unnecessary includes in source files 2023-12-26 12:04:31 -08:00
worktree.c Merge branch 'ps/leakfixes' into ps/leakfixes-more 2024-06-03 13:08:33 -07:00
write-tree.c builtin: stop using `the_index` 2024-04-18 12:30:42 -07:00