diff options
author | Junio C Hamano <gitster@pobox.com> | 2012-03-26 12:10:25 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2012-03-26 12:10:25 -0700 |
commit | 79efeae69d843af575fb27696f5263fe76c570a6 (patch) | |
tree | 91323d37d30cdf47dec3a2a9ef88933ac7f495e6 | |
parent | bda02ebc39fc9e46c979eee8026a66ac1a060dbd (diff) | |
parent | 178e1deaae33f879ea687e85ac72455b3072b0d8 (diff) | |
download | git-79efeae69d843af575fb27696f5263fe76c570a6.tar.gz git-79efeae69d843af575fb27696f5263fe76c570a6.tar.xz |
Merge branch 'jn/maint-fast-import-empty-ls' into maint
* jn/maint-fast-import-empty-ls:
fast-import: don't allow 'ls' of path with empty components
fast-import: leakfix for 'ls' of dirty trees
-rw-r--r-- | fast-import.c | 4 | ||||
-rwxr-xr-x | t/t9300-fast-import.sh | 39 |
2 files changed, 43 insertions, 0 deletions
diff --git a/fast-import.c b/fast-import.c index c1486cabb..a85275dc6 100644 --- a/fast-import.c +++ b/fast-import.c @@ -1641,6 +1641,8 @@ static int tree_content_get( n = slash1 - p; else n = strlen(p); + if (!n) + die("Empty path component found in input"); if (!root->tree) load_tree(root); @@ -3028,6 +3030,8 @@ static void parse_ls(struct branch *b) store_tree(&leaf); print_ls(leaf.versions[1].mode, leaf.versions[1].sha1, p); + if (leaf.tree) + release_tree_content_recursive(leaf.tree); if (!b || root != &b->branch_tree) release_tree_entry(root); } diff --git a/t/t9300-fast-import.sh b/t/t9300-fast-import.sh index 438aaf6b1..0f5b5e596 100755 --- a/t/t9300-fast-import.sh +++ b/t/t9300-fast-import.sh @@ -1307,6 +1307,45 @@ test_expect_success \ INPUT_END' test_expect_success \ + 'N: reject foo/ syntax in copy source' \ + 'test_must_fail git fast-import <<-INPUT_END + commit refs/heads/N5C + committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE + data <<COMMIT + copy with invalid syntax + COMMIT + + from refs/heads/branch^0 + C file2/ file3 + INPUT_END' + +test_expect_success \ + 'N: reject foo/ syntax in rename source' \ + 'test_must_fail git fast-import <<-INPUT_END + commit refs/heads/N5D + committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE + data <<COMMIT + rename with invalid syntax + COMMIT + + from refs/heads/branch^0 + R file2/ file3 + INPUT_END' + +test_expect_success \ + 'N: reject foo/ syntax in ls argument' \ + 'test_must_fail git fast-import <<-INPUT_END + commit refs/heads/N5E + committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE + data <<COMMIT + copy with invalid syntax + COMMIT + + from refs/heads/branch^0 + ls "file2/" + INPUT_END' + +test_expect_success \ 'N: copy to root by id and modify' \ 'echo "hello, world" >expect.foo && echo hello >expect.bar && |