Also update selftests to reflect that verification of "tagger" now happens _before_ verification of type name, object sha1 and tag name. Signed-off-by: Johan Herland <johan@xxxxxxxxxxx> --- mktag.c | 16 ++++++++-------- t/t3800-mktag.sh | 3 +++ tag.c | 6 +++--- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/mktag.c b/mktag.c index 0bc20c8..4dbefab 100644 --- a/mktag.c +++ b/mktag.c @@ -62,12 +62,18 @@ static int verify_tag(char *data, unsigned long size) /* Verify tag-line */ tag_line = strchr(type_line, '\n'); - if (!tag_line) + if (!tag_line++) return error("char" PD_FMT ": could not find next \"\\n\"", type_line - data); - tag_line++; if (memcmp(tag_line, "tag ", 4) || tag_line[4] == '\n') return error("char" PD_FMT ": no \"tag \" found", tag_line - data); + /* Verify the tagger line */ + tagger_line = strchr(tag_line, '\n'); + if (!tagger_line++) + return error("char" PD_FMT ": could not find next \"\\n\"", tag_line - data); + if (memcmp(tagger_line, "tagger ", 7) || (tagger_line[7] == '\n')) + return error("char" PD_FMT ": could not find \"tagger\"", tagger_line - data); + /* Get the actual type */ type_len = tag_line - type_line - strlen("type \n"); if (type_len >= sizeof(type)) @@ -90,12 +96,6 @@ static int verify_tag(char *data, unsigned long size) return error("char" PD_FMT ": could not verify tag name", tag_line - data); } - /* Verify the tagger line */ - tagger_line = tag_line; - - if (memcmp(tagger_line, "tagger", 6) || (tagger_line[6] == '\n')) - return error("char" PD_FMT ": could not find \"tagger\"", tagger_line - data); - /* TODO: check for committer info + blank line? */ /* Also, the minimum length is probably + "tagger .", or 63+8=71 */ diff --git a/t/t3800-mktag.sh b/t/t3800-mktag.sh index 7c7e433..b4edb4d 100755 --- a/t/t3800-mktag.sh +++ b/t/t3800-mktag.sh @@ -133,6 +133,7 @@ cat >tag.sig <<EOF object 779e9b33986b1c2670fff52c5067603117b3e895 type taggggggggggggggggggggggggggggggg tag mytag +tagger a EOF cat >expect.pat <<EOF @@ -148,6 +149,7 @@ cat >tag.sig <<EOF object 779e9b33986b1c2670fff52c5067603117b3e895 type tagggg tag mytag +tagger a EOF cat >expect.pat <<EOF @@ -163,6 +165,7 @@ cat >tag.sig <<EOF object $head type commit tag my tag +tagger a EOF cat >expect.pat <<EOF diff --git a/tag.c b/tag.c index 8d31603..19c66cd 100644 --- a/tag.c +++ b/tag.c @@ -73,10 +73,10 @@ static int parse_tag_buffer_internal(struct tag *item, const char *data, const u if (memcmp(tag_line, "tag ", 4) || tag_line[4] == '\n') return error("char" PD_FMT ": no \"tag \" found", tag_line - data); + /* Verify the tagger line */ tagger_line = strchr(tag_line, '\n'); - if (!tagger_line) - return -1; - tagger_line++; + if (!tagger_line++) + return error("char" PD_FMT ": could not find next \"\\n\"", tag_line - data); /* Get the actual type */ type_len = tag_line - type_line - strlen("type \n"); -- 1.5.2 - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html