{"thread":{"id":"13450","subject":"[PATCH 2/2] builtin-tag.c: use valid_ident for checking tagger field","startedAt":"2008-05-09T05:03:36Z","lastAt":"2008-05-12T15:51:55Z","messageCount":3,"participants":["drafnel@gmail.com","Junio C Hamano","Brandon Casey"],"isPatch":true,"patchVersion":1,"patchTotal":2},"messages":[{"id":"76443","messageId":"9526336.1210309346451.JavaMail.teamon@b304.teamon.com","threadId":"13450","inReplyTo":"1210309416-27787-1-git-send-email-author@example.com","subject":"[PATCH 2/2] builtin-tag.c: use valid_ident for checking tagger field","fromName":"","fromEmail":"drafnel@gmail.com","sentAt":"2008-05-09T05:03:36Z","receivedAt":"2008-05-09T05:03:36Z","isPatch":true,"sender":{"key":"drafnel@gmail.com","avatar":"https://avatars.githubusercontent.com/u/921167?v=4"},"body":"From: Brandon Casey <drafnel@gmail.com>\n\nUse valid_ident function for validating the tagger field\nin generated tags rather than a tag specific version.\n\nAlso update tests.\n\nSigned-off-by: Brandon Casey <drafnel@gmail.com>\n---\n builtin-tag.c    |   39 +++++----------------------------------\n t/t3800-mktag.sh |   14 +++++++-------\n 2 files changed, 12 insertions(+), 41 deletions(-)\n\ndiff --git a/builtin-tag.c b/builtin-tag.c\nindex 0f79d47..2dcb795 100644\n--- a/builtin-tag.c\n+++ b/builtin-tag.c\n@@ -339,8 +339,7 @@ static int verify_tag_buffer(const char *buffer, size_t size)\n \tint typelen;\n \tchar type[20];\n \tunsigned char sha1[20];\n-\tconst char *object, *type_line, *tag_line, *tagger_line, *lb, *rb;\n-\tsize_t len;\n+\tconst char *object, *type_line, *tag_line, *tagger_line, *rb;\n \n \tif (size < 84)\n \t\treturn error(\"wanna fool me ? you obviously got the size wrong !\");\n@@ -396,42 +395,14 @@ static int verify_tag_buffer(const char *buffer, size_t size)\n \t\treturn error(\"char\" PD_FMT \": could not find \\\"tagger \\\"\",\n \t\t\ttagger_line - buffer);\n \n-\t/*\n-\t * Check for correct form for name and email\n-\t * i.e. \" <\" followed by \"> \" on _this_ line\n-\t * No angle brackets within the name or email address fields.\n-\t * No spaces within the email address field.\n-\t */\n+\t/* Validate the tagger identity field */\n \ttagger_line += 7;\n-\tif (!(lb = strstr(tagger_line, \" <\")) || !(rb = strstr(lb+2, \"> \")) ||\n-\t\tstrpbrk(tagger_line, \"<>\\n\") != lb+1 ||\n-\t\tstrpbrk(lb+2, \"><\\n \") != rb)\n+\trb = strchr(tagger_line, '\\n');\n+\tif (!rb || !valid_ident(tagger_line, rb - tagger_line, 0))\n \t\treturn error(\"char\" PD_FMT \": malformed tagger field\",\n \t\t\ttagger_line - buffer);\n \n-\t/* Check for author name, at least one character, space is acceptable */\n-\tif (lb == tagger_line)\n-\t\treturn error(\"char\" PD_FMT \": missing tagger name\",\n-\t\t\ttagger_line - buffer);\n-\n-\t/* timestamp, 1 or more digits followed by space */\n-\ttagger_line = rb + 2;\n-\tif (!(len = strspn(tagger_line, \"0123456789\")))\n-\t\treturn error(\"char\" PD_FMT \": missing tag timestamp\",\n-\t\t\ttagger_line - buffer);\n-\ttagger_line += len;\n-\tif (*tagger_line != ' ')\n-\t\treturn error(\"char\" PD_FMT \": malformed tag timestamp\",\n-\t\t\ttagger_line - buffer);\n-\ttagger_line++;\n-\n-\t/* timezone, 5 digits [+-]hhmm, max. 1400 */\n-\tif (!((tagger_line[0] == '+' || tagger_line[0] == '-') &&\n-\t      strspn(tagger_line+1, \"0123456789\") == 4 &&\n-\t      tagger_line[5] == '\\n' && atoi(tagger_line+1) <= 1400))\n-\t\treturn error(\"char\" PD_FMT \": malformed tag timezone\",\n-\t\t\ttagger_line - buffer);\n-\ttagger_line += 6;\n+\ttagger_line = rb + 1;\n \n \t/* Verify the blank line separating the header from the body */\n \tif (*tagger_line != '\\n')\ndiff --git a/t/t3800-mktag.sh b/t/t3800-mktag.sh\nindex df1fd6f..1f62c05 100755\n--- a/t/t3800-mktag.sh\n+++ b/t/t3800-mktag.sh\n@@ -192,7 +192,7 @@ This is filler\n EOF\n \n check_verify_failure 'disallow missing tag author name' \\\n-\t'^error: char77: missing tagger name$'\n+\t'^error: char77: malformed tagger field$'\n \n ############################################################\n # 14. disallow missing tag author name\n@@ -250,7 +250,7 @@ tagger T A Gger <tagger@example.com>\n EOF\n \n check_verify_failure 'disallow missing tag timestamp' \\\n-\t'^error: char107: missing tag timestamp$'\n+\t'^error: char77: malformed tagger field$'\n \n ############################################################\n # 18. detect invalid tag timestamp1\n@@ -264,7 +264,7 @@ tagger T A Gger <tagger@example.com> Tue Mar 25 15:47:44 2008\n EOF\n \n check_verify_failure 'detect invalid tag timestamp1' \\\n-\t'^error: char107: missing tag timestamp$'\n+\t'^error: char77: malformed tagger field$'\n \n ############################################################\n # 19. detect invalid tag timestamp2\n@@ -278,7 +278,7 @@ tagger T A Gger <tagger@example.com> 2008-03-31T12:20:15-0500\n EOF\n \n check_verify_failure 'detect invalid tag timestamp2' \\\n-\t'^error: char111: malformed tag timestamp$'\n+\t'^error: char77: malformed tagger field$'\n \n ############################################################\n # 20. detect invalid tag timezone1\n@@ -292,7 +292,7 @@ tagger T A Gger <tagger@example.com> 1206478233 GMT\n EOF\n \n check_verify_failure 'detect invalid tag timezone1' \\\n-\t'^error: char118: malformed tag timezone$'\n+\t'^error: char77: malformed tagger field$'\n \n ############################################################\n # 21. detect invalid tag timezone2\n@@ -306,7 +306,7 @@ tagger T A Gger <tagger@example.com> 1206478233 +  30\n EOF\n \n check_verify_failure 'detect invalid tag timezone2' \\\n-\t'^error: char118: malformed tag timezone$'\n+\t'^error: char77: malformed tagger field$'\n \n ############################################################\n # 22. detect invalid tag timezone3\n@@ -320,7 +320,7 @@ tagger T A Gger <tagger@example.com> 1206478233 -1430\n EOF\n \n check_verify_failure 'detect invalid tag timezone3' \\\n-\t'^error: char118: malformed tag timezone$'\n+\t'^error: char77: malformed tagger field$'\n \n ############################################################\n # 23. detect invalid header entry\n-- \n1.5.5.67.g9a49\n"},{"id":"76655","messageId":"7vhcd43csh.fsf@gitster.siamese.dyndns.org","threadId":"13450","inReplyTo":"9526336.1210309346451.JavaMail.teamon@b304.teamon.com","subject":"Re: [PATCH 2/2] builtin-tag.c: use valid_ident for checking tagger field","fromName":"Junio C Hamano","fromEmail":"junio@pobox.com","sentAt":"2008-05-11T18:39:58Z","receivedAt":"2008-05-11T18:39:58Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"drafnel@gmail.com writes:\n\n> From: Brandon Casey <drafnel@gmail.com>\n>\n> Use valid_ident function for validating the tagger field\n> in generated tags rather than a tag specific version.\n>\n> Also update tests.\n>\n> Signed-off-by: Brandon Casey <drafnel@gmail.com>\n> ---\n>  builtin-tag.c    |   39 +++++----------------------------------\n>  t/t3800-mktag.sh |   14 +++++++-------\n>  2 files changed, 12 insertions(+), 41 deletions(-)\n>\n> diff --git a/builtin-tag.c b/builtin-tag.c\n> index 0f79d47..2dcb795 100644\n> --- a/builtin-tag.c\n> +++ b/builtin-tag.c\n> @@ -339,8 +339,7 @@ static int verify_tag_buffer(const char *buffer, size_t size)\n>  \tint typelen;\n>  \tchar type[20];\n\nFunny.\n\nThis [2/2] seems to depend on [3/5] that renames verify_tag to verify_tag_buffer().\n\nWhat is going on?\n"},{"id":"76720","messageId":"4828679B.6000507@nrlssc.navy.mil","threadId":"13450","inReplyTo":"7vhcd43csh.fsf@gitster.siamese.dyndns.org","subject":"Re: [PATCH 2/2] builtin-tag.c: use valid_ident for checking tagger field","fromName":"Brandon Casey","fromEmail":"casey@nrlssc.navy.mil","sentAt":"2008-05-12T15:51:55Z","receivedAt":"2008-05-12T15:51:55Z","isPatch":true,"sender":{"key":"drafnel@gmail.com","avatar":"https://avatars.githubusercontent.com/u/921167?v=4"},"body":"Junio C Hamano wrote:\n> drafnel@gmail.com writes:\n> \n>> From: Brandon Casey <drafnel@gmail.com>\n>>\n>> Use valid_ident function for validating the tagger field\n>> in generated tags rather than a tag specific version.\n>>\n>> Also update tests.\n>>\n>> Signed-off-by: Brandon Casey <drafnel@gmail.com>\n>> ---\n>>  builtin-tag.c    |   39 +++++----------------------------------\n>>  t/t3800-mktag.sh |   14 +++++++-------\n>>  2 files changed, 12 insertions(+), 41 deletions(-)\n>>\n>> diff --git a/builtin-tag.c b/builtin-tag.c\n>> index 0f79d47..2dcb795 100644\n>> --- a/builtin-tag.c\n>> +++ b/builtin-tag.c\n>> @@ -339,8 +339,7 @@ static int verify_tag_buffer(const char *buffer, size_t size)\n>>  \tint typelen;\n>>  \tchar type[20];\n> \n> Funny.\n> \n> This [2/2] seems to depend on [3/5] that renames verify_tag to verify_tag_buffer().\n> \n> What is going on?\n\nYes, sorry. I should have mentioned this.\n\nI implemented this after the other series, but it could just as well be merged into one,\nwith these two coming before the 5 patch mktag stuff. I can resubmit if you like.\n\n-brandon\n"}]}