X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=tag.c;h=7d38cc0f4de1c16b5b52725ba7a6a361650a6b41;hb=094574b32b799af01e5c0e0a44c2f41eb4a3f671;hp=f789744ccaf5d5fb6f63ba0911a869492affc162;hpb=006f424b2d014b8a7c4887b7ddbb57256dd6b8c7;p=thirdparty%2Fgit.git diff --git a/tag.c b/tag.c index f789744cca..7d38cc0f4d 100644 --- a/tag.c +++ b/tag.c @@ -56,7 +56,7 @@ static unsigned long parse_tag_date(const char *buf, const char *tail) return strtoul(dateptr, NULL, 10); } -int parse_tag_buffer(struct tag *item, void *data, unsigned long size) +int parse_tag_buffer(struct tag *item, const void *data, unsigned long size) { unsigned char sha1[20]; char type[20]; @@ -97,7 +97,9 @@ int parse_tag_buffer(struct tag *item, void *data, unsigned long size) item->tagged = NULL; } - if (prefixcmp(bufptr, "tag ")) + if (bufptr + 4 < tail && !prefixcmp(bufptr, "tag ")) + ; /* good */ + else return -1; bufptr += 4; nl = memchr(bufptr, '\n', tail - bufptr); @@ -106,7 +108,7 @@ int parse_tag_buffer(struct tag *item, void *data, unsigned long size) item->tag = xmemdupz(bufptr, nl - bufptr); bufptr = nl + 1; - if (!prefixcmp(bufptr, "tagger ")) + if (bufptr + 7 < tail && !prefixcmp(bufptr, "tagger ")) item->date = parse_tag_date(bufptr, tail); else item->date = 0;