From 8e9bfa4cf0584527cdbee0dba05cf5aabc60a4bc Mon Sep 17 00:00:00 2001 From: Vicent Marti Date: Tue, 27 Sep 2011 14:31:57 +0200 Subject: [PATCH] tree: Fix check for valid attributes --- src/tree.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/tree.c b/src/tree.c index 227da3c63..0acf74ede 100644 --- a/src/tree.c +++ b/src/tree.c @@ -15,7 +15,8 @@ #define MAX_FILEMODE 0777777 #define MAX_FILEMODE_BYTES 6 -static int valid_attributes(const int attributes) { +static int valid_attributes(const int attributes) +{ return attributes >= 0 && attributes <= MAX_FILEMODE; } @@ -169,8 +170,9 @@ static int tree_parse_buffer(git_tree *tree, const char *buffer, const char *buf return GIT_ENOMEM; if (git__strtol32(&tmp, buffer, &buffer, 8) < GIT_SUCCESS || - !buffer || tmp > UINT_MAX || tmp < 0) + !buffer || !valid_attributes(tmp)) return git__throw(GIT_EOBJCORRUPTED, "Failed to parse tree. Can't parse attributes"); + entry->attr = tmp; if (*buffer++ != ' ') {