Zachary Rice 4 лет назад
Родитель
Сommit
3d3d801729
2 измененных файлов с 25 добавлено и 1 удалено
  1. 12 0
      detect/detect_test.go
  2. 13 1
      detect/location.go

+ 12 - 0
detect/detect_test.go

@@ -34,6 +34,10 @@ func TestDetectFindings(t *testing.T) {
 					File:        "tmp.go",
 					RuleID:      "aws-access-key",
 					Tags:        []string{"key", "AWS"},
+					StartLine:   1,
+					EndLine:     1,
+					StartColumn: 15,
+					EndColumn:   34,
 				},
 			},
 		},
@@ -69,6 +73,10 @@ func TestDetectFindings(t *testing.T) {
 					RuleID:      "discord-api-key",
 					Tags:        []string{},
 					Entropy:     3.7906237,
+					StartLine:   1,
+					EndLine:     1,
+					StartColumn: 7,
+					EndColumn:   93,
 				},
 			},
 		},
@@ -91,6 +99,10 @@ func TestDetectFindings(t *testing.T) {
 					RuleID:      "generic-api-key",
 					Tags:        []string{},
 					Entropy:     3.7906237,
+					StartLine:   1,
+					EndLine:     1,
+					StartColumn: 22,
+					EndColumn:   93,
 				},
 			},
 		},

+ 13 - 1
detect/location.go

@@ -14,11 +14,15 @@ func getLocation(linePairs [][]int, start int, end int) Location {
 	var (
 		prevNewLine int
 		location    Location
+		lineSet     bool
+		_lineNum    int
 	)
 
 	for lineNum, pair := range linePairs {
+		_lineNum = lineNum
 		newLineByteIndex := pair[0]
 		if prevNewLine <= start && start < newLineByteIndex {
+			lineSet = true
 			location.startLine = lineNum
 			location.endLine = lineNum
 			location.startColumn = (start - prevNewLine) + 1 // +1 because counting starts at 1
@@ -30,9 +34,17 @@ func getLocation(linePairs [][]int, start int, end int) Location {
 			location.endColumn = (end - prevNewLine)
 			location.endLineIndex = newLineByteIndex
 		}
-
 		prevNewLine = pair[0]
 	}
 
+	if !lineSet {
+		// if lines never get set then that means the secret is most likely
+		// on the last line of the diff output and the diff output does not have
+		// a newline
+		location.startColumn = (start - prevNewLine) + 1 // +1 because counting starts at 1
+		location.endColumn = (end - prevNewLine)
+		location.startLine = _lineNum + 1
+		location.endLine = _lineNum + 1
+	}
 	return location
 }