diff options
Diffstat (limited to 'fsck.c')
| -rw-r--r-- | fsck.c | 8 | 
1 files changed, 7 insertions, 1 deletions
@@ -139,6 +139,7 @@ static int verify_ordered(unsigned mode1, const char *name1, unsigned mode2, con  static int fsck_tree(struct tree *item, int strict, fsck_error error_func)  {  	int retval; +	int has_null_sha1 = 0;  	int has_full_path = 0;  	int has_empty_name = 0;  	int has_zero_pad = 0; @@ -157,9 +158,12 @@ static int fsck_tree(struct tree *item, int strict, fsck_error error_func)  	while (desc.size) {  		unsigned mode;  		const char *name; +		const unsigned char *sha1; -		tree_entry_extract(&desc, &name, &mode); +		sha1 = tree_entry_extract(&desc, &name, &mode); +		if (is_null_sha1(sha1)) +			has_null_sha1 = 1;  		if (strchr(name, '/'))  			has_full_path = 1;  		if (!*name) @@ -207,6 +211,8 @@ static int fsck_tree(struct tree *item, int strict, fsck_error error_func)  	}  	retval = 0; +	if (has_null_sha1) +		retval += error_func(&item->object, FSCK_WARN, "contains entries pointing to null sha1");  	if (has_full_path)  		retval += error_func(&item->object, FSCK_WARN, "contains full pathnames");  	if (has_empty_name)  | 
