diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2019-11-28 23:07:30 +0800 |
---|---|---|
committer | techknowlogick <techknowlogick@gitea.io> | 2019-11-28 10:07:30 -0500 |
commit | c4e52d232e2f06fbb5bb7aa7c946c1e54ee2ad02 (patch) | |
tree | f5036df4a757f3a4538985282ae7ca03e88aa459 /services/gitdiff/gitdiff.go | |
parent | 2b257a91def6eb3bd5a5f06263e7c13cd193b8c8 (diff) | |
download | gitea-c4e52d232e2f06fbb5bb7aa7c946c1e54ee2ad02.tar.gz gitea-c4e52d232e2f06fbb5bb7aa7c946c1e54ee2ad02.zip |
Fix panic when diff (#9187) (#9193)
* fix panic when diff
* improve code
Diffstat (limited to 'services/gitdiff/gitdiff.go')
-rw-r--r-- | services/gitdiff/gitdiff.go | 17 |
1 files changed, 9 insertions, 8 deletions
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 |