summaryrefslogtreecommitdiff
path: root/tree-walk.c
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2016-09-27 16:59:50 -0400
committerJunio C Hamano <gitster@pobox.com>2016-09-27 14:08:30 -0700
commit2edffef2337eae691a454a072e0f9b9538725317 (patch)
treeca5acc195c62c4983c01e1049637fc3b08f3e85c /tree-walk.c
parent6fe1b1407ed91823daa5d487abe457ff37463349 (diff)
downloadgit-2edffef2337eae691a454a072e0f9b9538725317.tar.gz
tree-walk: be more specific about corrupt tree errors
When the tree-walker runs into an error, it just calls die(), and the message is always "corrupt tree file". However, we are actually covering several cases here; let's give the user a hint about what happened. Let's also avoid using the word "corrupt", which makes it seem like the data bit-rotted on disk. Our sha1 check would already have found that. These errors are ones of data that is malformed in the first place. Signed-off-by: David Turner <dturner@twosigma.com> Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'tree-walk.c')
-rw-r--r--tree-walk.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/tree-walk.c b/tree-walk.c
index ce27842439..24f9a0f14a 100644
--- a/tree-walk.c
+++ b/tree-walk.c
@@ -27,12 +27,14 @@ static void decode_tree_entry(struct tree_desc *desc, const char *buf, unsigned
const char *path;
unsigned int mode, len;
- if (size < 24 || buf[size - 21])
- die("corrupt tree file");
+ if (size < 23 || buf[size - 21])
+ die(_("too-short tree object"));
path = get_mode(buf, &mode);
- if (!path || !*path)
- die("corrupt tree file");
+ if (!path)
+ die(_("malformed mode in tree entry for tree"));
+ if (!*path)
+ die(_("empty filename in tree entry for tree"));
len = strlen(path) + 1;
/* Initialize the descriptor entry */
@@ -81,7 +83,7 @@ void update_tree_entry(struct tree_desc *desc)
unsigned long len = end - (const unsigned char *)buf;
if (size < len)
- die("corrupt tree file");
+ die(_("too-short tree file"));
buf = end;
size -= len;
desc->buffer = buf;