mktag: allow omitting the header/body \n separator

Change mktag's acceptance rules to accept an empty body without an empty line after the header again. This fixes an ancient unintended dregression in "mktag". When "mktag" was introduced in ec4465adb3 (Add "tag" objects that can be used to sign other objects., 2005-04-25) the input checks were much looser. When it was documented it 6cfec03680 (mktag: minimally update the description., 2007-06-10) it was clearly intended for this \n to be optional: The message, when [it] exists, is separated by a blank line from the header. But then in e0aaf781f6 (mktag.c: improve verification of tagger field and tests, 2008-03-27) this was made an error, seemingly by accident. It was just a result of the general header checks, and all the tests after that patch have a trailing empty line (but did not before). Let's allow this again, and tweak the test semantics changed in e0aaf781f6 to remove the redundant empty line. New tests added in previous commits of mine already added an explicit test for allowing the empty line between header and body. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Ævar Arnfjörð Bjarmason committed Jan 5, 2021 at 20:42 UTC 9a1a3a4d4c5648b94dbe8f34b83271d96dbaa6ec
2 files changed +4 -4
fsck.c
+2
@@ -987,6 +987,8 @@ int fsck_tag_standalone(const struct object_id *oid, const char *buffer,
987 }
988 else
989 ret = fsck_ident(&buffer, oid, OBJ_TAG, options);
990 + if (!*buffer)
991 + goto done;
992
993 if (!starts_with(buffer, "\n")) {
994 /*
t/t3800-mktag.sh
+2 -4
@@ -446,7 +446,7 @@ tagger T A Gger <tagger@example.com> 1206478233 -0500
446
447 EOF
448
449 -test_expect_mktag_success 'require a blank line before an empty body (1)'
449 +test_expect_mktag_success 'allow a blank line before an empty body (1)'
450
451 cat >tag.sig <<EOF
452 object $head
@@ -455,8 +455,7 @@ tag mytag
455 tagger T A Gger <tagger@example.com> 1206478233 -0500
456 EOF
457
458 -check_verify_failure 'require a blank line before an empty body (2)' \
459 - '^error:.* extraHeaderEntry:'
458 +test_expect_mktag_success 'allow no blank line before an empty body (2)'
459
460 ############################################################
461 # 24. create valid tag
@@ -466,7 +465,6 @@ object $head
465 type commit
466 tag mytag
467 tagger T A Gger <tagger@example.com> 1206478233 -0500
469 -
468 EOF
469
470 test_expect_mktag_success 'create valid tag object'