aboutsummaryrefslogtreecommitdiff
path: root/object.c
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2015-04-17 10:52:48 -0400
committerJunio C Hamano <gitster@pobox.com>2015-04-17 13:54:39 -0700
commitb7994af0f92e6cf150544aebe3c3fc526faaf2c3 (patch)
tree91f3353ce20796fea21fdf32e56ae8325924602e /object.c
parentfe8e3b71805cd13d139b62fa5a0c75387568c9ea (diff)
downloadgit-b7994af0f92e6cf150544aebe3c3fc526faaf2c3.tar.gz
git-b7994af0f92e6cf150544aebe3c3fc526faaf2c3.tar.xz
type_from_string_gently: make sure length matches
When commit fe8e3b7 refactored type_from_string to allow input that was not NUL-terminated, it switched to using strncmp instead of strcmp. But this means we check only the first "len" bytes of the strings, and ignore any remaining bytes in the object_type_string. We should make sure that it is also "len" bytes, or else we would accept "comm" as "commit", and so forth. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'object.c')
-rw-r--r--object.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/object.c b/object.c
index aedac243f..91bdde253 100644
--- a/object.c
+++ b/object.c
@@ -41,7 +41,8 @@ int type_from_string_gently(const char *str, ssize_t len, int gentle)
len = strlen(str);
for (i = 1; i < ARRAY_SIZE(object_type_strings); i++)
- if (!strncmp(str, object_type_strings[i], len))
+ if (!strncmp(str, object_type_strings[i], len) &&
+ object_type_strings[i][len] == '\0')
return i;
if (gentle)