1
0
mirror of https://github.com/git/git.git synced 2024-10-20 08:48:12 +02:00
git/builtin
Andrzej Hunt a317a553b8 builtin/for-each-ref: free filter and UNLEAK sorting.
sorting might be a list allocated in ref_default_sorting() (in this case
it's a fixed single item list, which has nevertheless been xcalloc'd),
or it might be a list allocated in parse_opt_ref_sorting(). In either
case we could free these lists - but instead we UNLEAK as we're at the
end of cmd_for_each_ref. (There's no existing implementation of
clear_ref_sorting(), and writing a loop to free the list seems more
trouble than it's worth.)

filter.with_commit/no_commit are populated via
OPT_CONTAINS/OPT_NO_CONTAINS, both of which create new entries via
parse_opt_commits(), and also need to be free'd or UNLEAK'd. Because
free_commit_list() already exists, we choose to use that over an UNLEAK.

LSAN output from t0041:

Direct leak of 16 byte(s) in 1 object(s) allocated from:
    #0 0x49a9d2 in calloc ../projects/compiler-rt/lib/asan/asan_malloc_linux.cpp:154:3
    #1 0x9ac252 in xcalloc wrapper.c:140:8
    #2 0x8a4a55 in ref_default_sorting ref-filter.c:2486:32
    #3 0x56c6b1 in cmd_for_each_ref builtin/for-each-ref.c:72:13
    #4 0x4cd91d in run_builtin git.c:467:11
    #5 0x4cb5f3 in handle_builtin git.c:719:3
    #6 0x4ccf47 in run_argv git.c:808:4
    #7 0x4caf49 in cmd_main git.c:939:19
    #8 0x69dabe in main common-main.c:52:11
    #9 0x7f2bdc570349 in __libc_start_main (/lib64/libc.so.6+0x24349)

Direct leak of 16 byte(s) in 1 object(s) allocated from:
    #0 0x49a85d in malloc ../projects/compiler-rt/lib/asan/asan_malloc_linux.cpp:145:3
    #1 0x9abf54 in do_xmalloc wrapper.c:41:8
    #2 0x9abf2a in xmalloc wrapper.c:62:9
    #3 0x717486 in commit_list_insert commit.c:540:33
    #4 0x8644cf in parse_opt_commits parse-options-cb.c:98:2
    #5 0x869bb5 in get_value parse-options.c:181:11
    #6 0x8677dc in parse_long_opt parse-options.c:378:10
    #7 0x8659bd in parse_options_step parse-options.c:817:11
    #8 0x867fcd in parse_options parse-options.c:870:10
    #9 0x56c62b in cmd_for_each_ref builtin/for-each-ref.c:59:2
    #10 0x4cd91d in run_builtin git.c:467:11
    #11 0x4cb5f3 in handle_builtin git.c:719:3
    #12 0x4ccf47 in run_argv git.c:808:4
    #13 0x4caf49 in cmd_main git.c:939:19
    #14 0x69dabe in main common-main.c:52:11
    #15 0x7f2bdc570349 in __libc_start_main (/lib64/libc.so.6+0x24349)

Signed-off-by: Andrzej Hunt <ajrhunt@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2021-04-28 09:25:45 +09:00
..
add.c add: propagate --chmod errors to exit status 2021-02-24 12:14:51 -08:00
am.c builtin/*: update usage format 2021-01-06 15:10:49 -08:00
annotate.c
apply.c
archive.c
bisect--helper.c bisect--helper: retire --check-and-set-terms subcommand 2021-02-03 14:52:09 -08:00
blame.c Merge branch 'rs/blame-optim' 2021-02-25 16:43:29 -08:00
branch.c Merge branch 'ph/use-delete-refs' 2021-02-05 16:40:45 -08:00
bugreport.c builtin/bugreport: don't leak prefixed filename 2021-04-28 09:25:45 +09:00
bundle.c
cat-file.c
check-attr.c
check-ignore.c builtin/check-ignore: clear_pathspec before returning 2021-04-28 09:25:45 +09:00
check-mailmap.c shortlog: remove unused(?) "repo-abbrev" feature 2021-01-12 14:04:42 -08:00
check-ref-format.c
checkout-index.c checkout-index: omit entries with no tempname from --temp output 2021-02-16 11:27:18 -08:00
checkout.c builtin/checkout: clear pending objects after diffing 2021-04-28 09:25:45 +09:00
clean.c quote_path: give flags parameter to quote_path() 2020-09-10 10:49:19 -07:00
clone.c clone: free or UNLEAK further pointers when finished 2021-03-14 15:57:59 -07:00
column.c
commit-graph.c builtin/*: update usage format 2021-01-06 15:10:49 -08:00
commit-tree.c
commit.c shortlog: remove unused(?) "repo-abbrev" feature 2021-01-12 14:04:42 -08:00
config.c config: implement --fixed-value with --get* 2020-11-25 14:43:48 -08:00
count-objects.c
credential-cache--daemon.c
credential-cache.c Merge branch 'jc/undash-in-tree-git-callers' 2020-09-03 12:37:03 -07:00
credential-store.c crendential-store: use timeout when locking file 2020-11-25 12:30:18 -08:00
credential.c credential: load default config 2020-10-16 12:30:45 -07:00
describe.c refs: switch peel_ref() to peel_iterated_oid() 2021-01-21 15:51:31 -08:00
diff-files.c Merge branch 'jc/diffcore-rotate' 2021-02-25 16:43:30 -08:00
diff-index.c Merge branch 'jc/diffcore-rotate' 2021-02-25 16:43:30 -08:00
diff-tree.c Merge branch 'jc/diffcore-rotate' 2021-02-25 16:43:30 -08:00
diff.c Merge branch 'jc/diffcore-rotate' 2021-02-25 16:43:30 -08:00
difftool.c Use new HASHMAP_INIT macro to simplify hashmap initialization 2020-11-11 12:55:27 -08:00
env--helper.c assert PARSE_OPT_NONEG in parse-options callbacks 2020-09-30 12:53:47 -07:00
fast-export.c builtin/*: update usage format 2021-01-06 15:10:49 -08:00
fast-import.c Merge branch 'jk/fast-import-marks-cleanup' 2020-11-02 13:17:40 -08:00
fetch-pack.c connect, transport: encapsulate arg in struct 2021-02-05 13:49:54 -08:00
fetch.c Merge branch 'jt/clone-unborn-head' 2021-02-17 17:21:40 -08:00
fmt-merge-msg.c
for-each-ref.c builtin/for-each-ref: free filter and UNLEAK sorting. 2021-04-28 09:25:45 +09:00
for-each-repo.c for-each-repo: do nothing on empty config 2021-01-07 19:12:02 -08:00
fsck.c fsck: make fsck_config() re-usable 2021-01-05 14:58:29 -08:00
gc.c maintenance: fix incorrect maintenance.repo path with bare repository 2021-02-23 00:22:45 -08:00
get-tar-commit-id.c
grep.c Merge branch 'mt/grep-sparse-checkout' 2021-02-25 16:43:31 -08:00
hash-object.c
help.c
index-pack.c Merge branch 'jt/transfer-fsck-across-packs' 2021-03-01 14:02:57 -08:00
init-db.c init-db: silence template_dir leak when converting to absolute path 2021-03-14 15:58:00 -07:00
interpret-trailers.c
log.c Merge branch 'ab/diff-deferred-free' 2021-02-22 16:12:43 -08:00
ls-files.c ls-files: free max_prefix when done 2021-04-28 09:25:44 +09:00
ls-remote.c transport: also free remote_refs in transport_disconnect() 2021-03-21 14:39:10 -07:00
ls-tree.c
mailinfo.c
mailsplit.c
merge-base.c
merge-file.c
merge-index.c
merge-ours.c
merge-recursive.c
merge-tree.c merge-base, xdiff: zero out xpparam_t structures 2020-10-20 12:53:26 -07:00
merge.c Merge branch 'so/log-diff-merge' 2021-02-05 16:40:44 -08:00
mktag.c mktag: add a --[no-]strict option 2021-01-06 14:22:24 -08:00
mktree.c
multi-pack-index.c
mv.c
name-rev.c oid_pos(): access table through const pointers 2021-01-28 12:03:26 -08:00
notes.c replace "parameters" by "arguments" in error messages 2021-02-23 13:30:45 -08:00
pack-objects.c Merge branch 'tb/pack-revindex-on-disk' 2021-02-12 14:21:04 -08:00
pack-redundant.c Merge branch 'jc/deprecate-pack-redundant' 2021-01-25 14:19:18 -08:00
pack-refs.c
patch-id.c
prune-packed.c
prune.c
pull.c pull: display default warning only when non-ff 2020-12-15 17:39:42 -08:00
push.c Merge branch 'jc/push-delete-nothing' 2021-02-25 16:43:33 -08:00
range-diff.c Merge branch 'js/range-diff-one-side-only' 2021-02-17 17:21:41 -08:00
read-tree.c
rebase.c rebase: add a config option for --no-fork-point 2021-02-24 11:49:10 -08:00
receive-pack.c Merge branch 'jt/transfer-fsck-across-packs' 2021-03-01 14:02:57 -08:00
reflog.c reflog expire --stale-fix: be generous about missing objects 2021-02-11 09:21:52 -08:00
remote-ext.c
remote-fd.c
remote.c transport: also free remote_refs in transport_disconnect() 2021-03-21 14:39:10 -07:00
repack.c packfile: prepare for the existence of '*.rev' files 2021-01-25 18:32:43 -08:00
replace.c
rerere.c
reset.c reset: free instead of leaking unneeded ref 2021-03-14 15:57:59 -07:00
rev-list.c rev-list: add --disk-usage option for calculating disk usage 2021-02-11 09:57:55 -08:00
rev-parse.c rev-parse: add option for absolute or relative path formatting 2020-12-12 23:35:51 -08:00
revert.c Merge branch 'en/merge-ort-api-null-impl' 2020-11-18 13:32:53 -08:00
rm.c
send-pack.c push: parse and set flag for "--force-if-includes" 2020-10-03 09:59:19 -07:00
shortlog.c Merge branch 'ab/mailmap' 2021-01-25 14:19:19 -08:00
show-branch.c Merge branch 'jt/interpret-branch-name-fallback' 2020-09-09 13:53:09 -07:00
show-index.c
show-ref.c refs: switch peel_ref() to peel_iterated_oid() 2021-01-21 15:51:31 -08:00
sparse-checkout.c sparse-checkout: load sparse-checkout patterns 2021-01-23 17:14:07 -08:00
stash.c Merge branch 'js/params-vs-args' 2021-02-25 16:43:32 -08:00
stripspace.c
submodule--helper.c Merge branch 'tb/precompose-prefix-too' 2021-02-12 14:21:04 -08:00
symbolic-ref.c symbolic-ref: don't leak shortened refname in check_symref() 2021-03-14 15:57:59 -07:00
tag.c Merge branch 'js/params-vs-args' 2021-02-25 16:43:32 -08:00
unpack-file.c
unpack-objects.c
update-index.c
update-ref.c update-ref: disallow "start" for ongoing transactions 2020-11-16 13:44:01 -08:00
update-server-info.c
upload-archive.c
upload-pack.c
var.c
verify-commit.c
verify-pack.c
verify-tag.c
worktree.c worktree: fix leak in dwim_branch() 2021-03-14 15:57:59 -07:00
write-tree.c