mirror of
https://github.com/git/git
synced 2024-08-25 02:35:46 +00:00
![Ævar Arnfjörð Bjarmason](/assets/img/avatar_default.png)
Fix a memory leak where "cat-file" will leak the "path" member. Seee5fba602e5
(textconv: support for cat_file, 2010-06-15) for the code that introduced the offending get_oid_with_context() call (called get_sha1_with_context() at the time). As a result we can mark several tests as passing with SANITIZE=leak using "TEST_PASSES_SANITIZE_LEAK=true". As noted indc944b65f1
(get_sha1_with_context: dynamically allocate oc->path, 2017-05-19) callers must free the "path" member. That same commit added the relevant free() to this function, but we weren't catching cases where we'd return early. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
58 lines
1.2 KiB
Bash
Executable file
58 lines
1.2 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
test_description='test unique sha1 abbreviation on "index from..to" line'
|
|
|
|
TEST_PASSES_SANITIZE_LEAK=true
|
|
. ./test-lib.sh
|
|
|
|
test_expect_success 'setup' '
|
|
test_oid_cache <<-EOF &&
|
|
val1 sha1:4827
|
|
val1 sha256:5664
|
|
|
|
val2 sha1:11742
|
|
val2 sha256:10625
|
|
|
|
hash1 sha1:51d2738463ea4ca66f8691c91e33ce64b7d41bb1
|
|
hash1 sha256:ae31dfff0af93b2c62b0098a039b38569c43b0a7e97b873000ca42d128f27350
|
|
|
|
hasht1 sha1:51d27384
|
|
hasht1 sha256:ae31dfff
|
|
|
|
hash2 sha1:51d2738efb4ad8a1e40bed839ab8e116f0a15e47
|
|
hash2 sha256:ae31dffada88a46fd5f53c7ed5aa25a7a8951f1d5e88456c317c8d5484d263e5
|
|
|
|
hasht2 sha1:51d2738e
|
|
hasht2 sha256:ae31dffa
|
|
EOF
|
|
|
|
cat >expect_initial <<-EOF &&
|
|
100644 blob $(test_oid hash1) foo
|
|
EOF
|
|
|
|
cat >expect_update <<-EOF &&
|
|
100644 blob $(test_oid hash2) foo
|
|
EOF
|
|
|
|
echo "$(test_oid val1)" > foo &&
|
|
git add foo &&
|
|
git commit -m "initial" &&
|
|
git cat-file -p HEAD: > actual &&
|
|
test_cmp expect_initial actual &&
|
|
echo "$(test_oid val2)" > foo &&
|
|
git commit -a -m "update" &&
|
|
git cat-file -p HEAD: > actual &&
|
|
test_cmp expect_update actual
|
|
'
|
|
|
|
cat >expect <<EOF
|
|
index $(test_oid hasht1)..$(test_oid hasht2) 100644
|
|
EOF
|
|
|
|
test_expect_success 'diff does not produce ambiguous index line' '
|
|
git diff HEAD^..HEAD | grep index > actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_done
|