Skip to content

Commit

Permalink
Catch errors when writing an index that contains invalid objects.
Browse files Browse the repository at this point in the history
If git-write-index is called without --missing-ok, it reports invalid
objects that it finds in the index. But without this patch it dies
right away or may run into an infinite loop.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Junio C Hamano <junkio@cox.net>
  • Loading branch information
Johannes Sixt authored and Junio C Hamano committed Nov 13, 2006
1 parent 40cf043 commit 3d12d0c
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 0 deletions.
2 changes: 2 additions & 0 deletions cache-tree.c
Original file line number Diff line number Diff line change
Expand Up @@ -282,6 +282,8 @@ static int update_one(struct cache_tree *it,
baselen + sublen + 1,
missing_ok,
dryrun);
if (subcnt < 0)
return subcnt;
i += subcnt - 1;
sub->used = 1;
}
Expand Down
22 changes: 22 additions & 0 deletions t/t0000-basic.sh
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,28 @@ test_expect_success \
'validate object ID for a known tree.' \
'test "$ptree" = 3c5e5399f3a333eddecce7a9b9465b63f65f51e2'

cat >badobjects <<EOF
100644 blob 1000000000000000000000000000000000000000 dir/file1
100644 blob 2000000000000000000000000000000000000000 dir/file2
100644 blob 3000000000000000000000000000000000000000 dir/file3
100644 blob 4000000000000000000000000000000000000000 dir/file4
100644 blob 5000000000000000000000000000000000000000 dir/file5
EOF

rm .git/index
test_expect_success \
'put invalid objects into the index.' \
'git-update-index --index-info < badobjects'

test_expect_failure \
'writing this tree without --missing-ok.' \
'git-write-tree'

test_expect_success \
'writing this tree with --missing-ok.' \
'git-write-tree --missing-ok'


################################################################
rm .git/index
test_expect_success \
Expand Down

0 comments on commit 3d12d0c

Please sign in to comment.