From c4e52d232e2f06fbb5bb7aa7c946c1e54ee2ad02 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Thu, 28 Nov 2019 23:07:30 +0800 Subject: Fix panic when diff (#9187) (#9193) * fix panic when diff * improve code --- services/gitdiff/gitdiff.go | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'services/gitdiff/gitdiff.go') diff --git a/services/gitdiff/gitdiff.go b/services/gitdiff/gitdiff.go index 9c2aef5c97..b2f5adeeee 100644 --- a/services/gitdiff/gitdiff.go +++ b/services/gitdiff/gitdiff.go @@ -546,6 +546,15 @@ func ParsePatch(maxLines, maxLineCharacters, maxFiles int, reader io.Reader) (*D // Get new file. if strings.HasPrefix(line, cmdDiffHead) { + if len(diff.Files) >= maxFiles { + diff.IsIncomplete = true + _, err := io.Copy(ioutil.Discard, reader) + if err != nil { + return nil, fmt.Errorf("Copy: %v", err) + } + break + } + var middle int // Note: In case file name is surrounded by double quotes (it happens only in git-shell). @@ -590,14 +599,6 @@ func ParsePatch(maxLines, maxLineCharacters, maxFiles int, reader io.Reader) (*D IsRenamed: a != b, } diff.Files = append(diff.Files, curFile) - if len(diff.Files) >= maxFiles { - diff.IsIncomplete = true - _, err := io.Copy(ioutil.Discard, reader) - if err != nil { - return nil, fmt.Errorf("Copy: %v", err) - } - break - } curFileLinesCount = 0 curFileLFSPrefix = false -- cgit v1.2.3