summaryrefslogtreecommitdiffstats
path: root/services/gitdiff/gitdiff.go
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2019-11-28 23:07:30 +0800
committertechknowlogick <techknowlogick@gitea.io>2019-11-28 10:07:30 -0500
commitc4e52d232e2f06fbb5bb7aa7c946c1e54ee2ad02 (patch)
treef5036df4a757f3a4538985282ae7ca03e88aa459 /services/gitdiff/gitdiff.go
parent2b257a91def6eb3bd5a5f06263e7c13cd193b8c8 (diff)
downloadgitea-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.go17
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