Fix git.parseTagData (#14105)

* Fix git.parseTagData()
close #14092

* Add Test

* add message to test

* limit readers

* git tag -m trims and terminates with a newline

Co-authored-by: Andrew Thornton <art27@cantab.net>
Co-authored-by: 6543 <6543@obermui.de>
This commit is contained in:
6543
2020-12-22 20:44:25 +00:00
committed by GitHub
parent 30edcd5c71
commit 27fa4814b8
4 changed files with 81 additions and 5 deletions

View File

@ -33,7 +33,7 @@ func (repo *Repository) getTree(id SHA1) (*Tree, error) {
bufReader := bufio.NewReader(stdoutReader)
// ignore the SHA
_, typ, _, err := ReadBatchLine(bufReader)
_, typ, size, err := ReadBatchLine(bufReader)
if err != nil {
return nil, err
}
@ -41,7 +41,7 @@ func (repo *Repository) getTree(id SHA1) (*Tree, error) {
switch typ {
case "tag":
resolvedID := id
data, err := ioutil.ReadAll(bufReader)
data, err := ioutil.ReadAll(io.LimitReader(bufReader, size))
if err != nil {
return nil, err
}
@ -57,7 +57,7 @@ func (repo *Repository) getTree(id SHA1) (*Tree, error) {
log("tag.commit.Tree: %s %v", commit.Tree.ID.String(), commit.Tree.repo)
return &commit.Tree, nil
case "commit":
commit, err := CommitFromReader(repo, id, bufReader)
commit, err := CommitFromReader(repo, id, io.LimitReader(bufReader, size))
if err != nil {
_ = stdoutReader.CloseWithError(err)
return nil, err