瀏覽代碼

panic plan (#99)

Zachary Rice 7 年之前
父節點
當前提交
fe8c6271f2
共有 2 個文件被更改,包括 13 次插入7 次删除
  1. 4 0
      CHANGELOG.md
  2. 9 7
      main.go

+ 4 - 0
CHANGELOG.md

@@ -1,6 +1,10 @@
 CHANGELOG
 CHANGELOG
 =========
 =========
 
 
+1.6.1
+-----
+- Recover from panic when diffing
+
 1.6.0
 1.6.0
 -----
 -----
 - Default maximum goroutines spawned is number of cores your cpu run with. See benchmarks in wiki.
 - Default maximum goroutines spawned is number of cores your cpu run with. See benchmarks in wiki.

+ 9 - 7
main.go

@@ -119,7 +119,7 @@ type Config struct {
 }
 }
 
 
 const defaultGithubURL = "https://api.github.com/"
 const defaultGithubURL = "https://api.github.com/"
-const version = "1.6.0"
+const version = "1.6.1"
 const defaultConfig = `
 const defaultConfig = `
 title = "gitleaks config"
 title = "gitleaks config"
 # add regexes to the regex table
 # add regexes to the regex table
@@ -393,6 +393,14 @@ func auditRef(repo Repo, ref *plumbing.Reference, commitWg *sync.WaitGroup, comm
 				filePath string
 				filePath string
 				skipFile bool
 				skipFile bool
 			)
 			)
+			defer func() {
+				<-semaphore
+				commitChan <- leaks
+				if r := recover(); r != nil {
+					log.Warnf("recoverying from panic on commit %s, likely large diff causing panic", c.Hash.String())
+				}
+			}()
+
 			if prevCommit == nil {
 			if prevCommit == nil {
 				t, _ := c.Tree()
 				t, _ := c.Tree()
 				files := t.Files()
 				files := t.Files()
@@ -406,16 +414,12 @@ func auditRef(repo Repo, ref *plumbing.Reference, commitWg *sync.WaitGroup, comm
 				})
 				})
 				if err != nil {
 				if err != nil {
 					log.Warnf("problem generating diff for commit: %s\n", c.Hash.String())
 					log.Warnf("problem generating diff for commit: %s\n", c.Hash.String())
-					<-semaphore
-					commitChan <- leaks
 					return
 					return
 				}
 				}
 			} else {
 			} else {
 				patch, err := c.Patch(prevCommit)
 				patch, err := c.Patch(prevCommit)
 				if err != nil {
 				if err != nil {
 					log.Warnf("problem generating patch for commit: %s\n", c.Hash.String())
 					log.Warnf("problem generating patch for commit: %s\n", c.Hash.String())
-					<-semaphore
-					commitChan <- leaks
 					return
 					return
 				}
 				}
 				for _, f := range patch.FilePatches() {
 				for _, f := range patch.FilePatches() {
@@ -445,8 +449,6 @@ func auditRef(repo Repo, ref *plumbing.Reference, commitWg *sync.WaitGroup, comm
 					}
 					}
 				}
 				}
 			}
 			}
-			<-semaphore
-			commitChan <- leaks
 		}(c, prevCommit)
 		}(c, prevCommit)
 		prevCommit = c
 		prevCommit = c
 		return nil
 		return nil