Catch empty pathnames in trees during fsck
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>
This commit is contained in:
parent
26e60160a0
commit
cb2cada6da
@ -218,6 +218,7 @@ static int fsck_tree(struct tree *item)
|
|||||||
{
|
{
|
||||||
int retval;
|
int retval;
|
||||||
int has_full_path = 0;
|
int has_full_path = 0;
|
||||||
|
int has_empty_name = 0;
|
||||||
int has_zero_pad = 0;
|
int has_zero_pad = 0;
|
||||||
int has_bad_modes = 0;
|
int has_bad_modes = 0;
|
||||||
int has_dup_entries = 0;
|
int has_dup_entries = 0;
|
||||||
@ -241,6 +242,8 @@ static int fsck_tree(struct tree *item)
|
|||||||
|
|
||||||
if (strchr(name, '/'))
|
if (strchr(name, '/'))
|
||||||
has_full_path = 1;
|
has_full_path = 1;
|
||||||
|
if (!*name)
|
||||||
|
has_empty_name = 1;
|
||||||
has_zero_pad |= *(char *)desc.buffer == '0';
|
has_zero_pad |= *(char *)desc.buffer == '0';
|
||||||
update_tree_entry(&desc);
|
update_tree_entry(&desc);
|
||||||
|
|
||||||
@ -289,6 +292,9 @@ static int fsck_tree(struct tree *item)
|
|||||||
if (has_full_path) {
|
if (has_full_path) {
|
||||||
objwarning(&item->object, "contains full pathnames");
|
objwarning(&item->object, "contains full pathnames");
|
||||||
}
|
}
|
||||||
|
if (has_empty_name) {
|
||||||
|
objwarning(&item->object, "contains empty pathname");
|
||||||
|
}
|
||||||
if (has_zero_pad) {
|
if (has_zero_pad) {
|
||||||
objwarning(&item->object, "contains zero-padded file modes");
|
objwarning(&item->object, "contains zero-padded file modes");
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user