Skip to content

Commit

Permalink
Catch empty pathnames in trees during fsck
Browse files Browse the repository at this point in the history
Released versions of fast-import have been able to create a tree that
contains files or subtrees that contain no name.  Unfortunately these
trees aren't valid, but people may have actually tried to create them
due to bugs in import-tars.perl or their own fast-import frontend.

We now look for this unusual condition and warn the user if at
least one of their tree objects contains the problem.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
  • Loading branch information
Shawn O. Pearce authored and Junio C Hamano committed Apr 29, 2007
1 parent 26e6016 commit cb2cada
Showing 1 changed file with 6 additions and 0 deletions.
6 changes: 6 additions & 0 deletions builtin-fsck.c
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,7 @@ static int fsck_tree(struct tree *item)
{
int retval;
int has_full_path = 0;
int has_empty_name = 0;
int has_zero_pad = 0;
int has_bad_modes = 0;
int has_dup_entries = 0;
Expand All @@ -241,6 +242,8 @@ static int fsck_tree(struct tree *item)

if (strchr(name, '/'))
has_full_path = 1;
if (!*name)
has_empty_name = 1;
has_zero_pad |= *(char *)desc.buffer == '0';
update_tree_entry(&desc);

Expand Down Expand Up @@ -289,6 +292,9 @@ static int fsck_tree(struct tree *item)
if (has_full_path) {
objwarning(&item->object, "contains full pathnames");
}
if (has_empty_name) {
objwarning(&item->object, "contains empty pathname");
}
if (has_zero_pad) {
objwarning(&item->object, "contains zero-padded file modes");
}
Expand Down

0 comments on commit cb2cada

Please sign in to comment.