diff options
author | Roger Meier <r.meier@siemens.com> | 2020-04-13 18:04:44 +0300 |
---|---|---|
committer | Roger Meier <r.meier@siemens.com> | 2020-04-15 17:25:51 +0300 |
commit | 2e9b29332cb87e8d2d6f4ec8401c12d110e1e0fc (patch) | |
tree | 7ca9d3dfab40c4bccf20d7c3862f244da1f9fa28 | |
parent | 58685db54bee28f4d863394c53c51b636ce2ed01 (diff) |
Fix signature detection for tags
Closes #2645
-rw-r--r-- | changelogs/unreleased/fix-tag-message-parse.yml | 5 | ||||
-rw-r--r-- | internal/git/log/tag.go | 11 |
2 files changed, 13 insertions, 3 deletions
diff --git a/changelogs/unreleased/fix-tag-message-parse.yml b/changelogs/unreleased/fix-tag-message-parse.yml new file mode 100644 index 000000000..24a18342b --- /dev/null +++ b/changelogs/unreleased/fix-tag-message-parse.yml @@ -0,0 +1,5 @@ +--- +title: Fix signature detection for tags +merge_request: 2045 +author: Roger Meier +type: fixed diff --git a/internal/git/log/tag.go b/internal/git/log/tag.go index 0b71ef3df..f309f9b78 100644 --- a/internal/git/log/tag.go +++ b/internal/git/log/tag.go @@ -121,10 +121,15 @@ func buildAnnotatedTag(b *catfile.Batch, tagID, name string, header *tagHeader, // tags contain the signature block in the message: // https://github.com/git/git/blob/master/Documentation/technical/signature-format.txt#L12 - index := bytes.Index(tag.Message, []byte("-----BEGIN")) + index := bytes.Index(body, []byte("-----BEGIN")) + if index > 0 { - signature := string(tag.Message[index : bytes.Index(tag.Message[index:], []byte("\n"))+index]) - tag.SignatureType = detectSignatureType(signature) + length := bytes.Index(body[index:], []byte("\n")) + + if length > 0 { + signature := string(body[index : length+index]) + tag.SignatureType = detectSignatureType(signature) + } } tag.Tagger = parseCommitAuthor(header.tagger) |