Selaa lähdekoodia

Use rule id for config validation error (#1463)

* chore(config): use rule id for error

* feat(config): ensure rule.id is not empty
Richard Gomez 1 vuosi sitten
vanhempi
commit
c0fda4358e
4 muutettua tiedostoa jossa 19 lisäystä ja 3 poistoa
  1. 5 1
      config/config.go
  2. 6 1
      config/config_test.go
  3. 1 1
      detect/detect_test.go
  4. 7 0
      testdata/config/missing_id.toml

+ 5 - 1
config/config.go

@@ -82,6 +82,10 @@ func (vc *ViperConfig) Translate() (Config, error) {
 	rulesMap := make(map[string]Rule)
 
 	for _, r := range vc.Rules {
+		if strings.TrimSpace(r.ID) == "" {
+			return Config{}, fmt.Errorf("rule ID is missing or empty, regex: %s", r.Regex)
+		}
+
 		var allowlistRegexes []*regexp.Regexp
 		for _, a := range r.Allowlist.Regexes {
 			allowlistRegexes = append(allowlistRegexes, regexp.MustCompile(a))
@@ -135,7 +139,7 @@ func (vc *ViperConfig) Translate() (Config, error) {
 		orderedRules = append(orderedRules, r.RuleID)
 
 		if r.Regex != nil && r.SecretGroup > r.Regex.NumSubexp() {
-			return Config{}, fmt.Errorf("%s invalid regex secret group %d, max regex secret group %d", r.Description, r.SecretGroup, r.Regex.NumSubexp())
+			return Config{}, fmt.Errorf("%s: invalid regex secret group %d, max regex secret group %d", r.RuleID, r.SecretGroup, r.Regex.NumSubexp())
 		}
 		rulesMap[r.RuleID] = r
 	}

+ 6 - 1
config/config_test.go

@@ -86,10 +86,15 @@ func TestTranslate(t *testing.T) {
 				},
 			},
 		},
+		{
+			cfgName:   "missing_id",
+			cfg:       Config{},
+			wantError: fmt.Errorf("rule ID is missing or empty, regex: (?i)(discord[a-z0-9_ .\\-,]{0,25})(=|>|:=|\\|\\|:|<=|=>|:).{0,5}['\\\"]([a-h0-9]{64})['\\\"]"),
+		},
 		{
 			cfgName:   "bad_entropy_group",
 			cfg:       Config{},
-			wantError: fmt.Errorf("Discord API key invalid regex secret group 5, max regex secret group 3"),
+			wantError: fmt.Errorf("discord-api-key: invalid regex secret group 5, max regex secret group 3"),
 		},
 		{
 			cfgName: "base",

+ 1 - 1
detect/detect_test.go

@@ -295,7 +295,7 @@ func TestDetect(t *testing.T) {
 				FilePath: "tmp.go",
 			},
 			expectedFindings: []report.Finding{},
-			wantError:        fmt.Errorf("Discord API key invalid regex secret group 5, max regex secret group 3"),
+			wantError:        fmt.Errorf("discord-api-key: invalid regex secret group 5, max regex secret group 3"),
 		},
 		{
 			cfgName: "simple",

+ 7 - 0
testdata/config/missing_id.toml

@@ -0,0 +1,7 @@
+title = "gitleaks config"
+
+[[rules]]
+description = "Discord API key"
+regex = '''(?i)(discord[a-z0-9_ .\-,]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-h0-9]{64})['\"]'''
+secretGroup = 5
+entropy = 3.5