Skip to content

Commit 6171942

Browse files
[Issue #174] | Truncate content when reporting error
1 parent 1009c0a commit 6171942

File tree

2 files changed

+26
-4
lines changed

2 files changed

+26
-4
lines changed

detector/filecontent_detector.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,14 +159,21 @@ func processContent(c content, result *DetectionResults) {
159159
"filePath": c.path,
160160
}).Info(c.contentType.getInfo())
161161
if string(c.name) == talismanrc.DefaultRCFileName {
162-
result.Warn(c.path, "filecontent", fmt.Sprintf(c.contentType.getMessageFormat(), res), []string{})
162+
result.Warn(c.path, "filecontent", fmt.Sprintf(c.contentType.getMessageFormat(), formatForReporting(res)), []string{})
163163
} else {
164-
result.Fail(c.path, "filecontent", fmt.Sprintf(c.contentType.getMessageFormat(), res), []string{})
164+
result.Fail(c.path, "filecontent", fmt.Sprintf(c.contentType.getMessageFormat(), formatForReporting(res)), []string{})
165165
}
166166
}
167167
}
168168
}
169169

170+
func formatForReporting(input string) string {
171+
if len(input) > 50 {
172+
return input[:47] + "..."
173+
}
174+
return input
175+
}
176+
170177
func (fc *FileContentDetector) detectFile(data []byte, getResult fn) []string {
171178
content := string(data)
172179
return fc.checkEachLine(content, getResult)

detector/filecontent_detector_test.go

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,21 @@ func TestShouldFlagPotentialAWSSecretKeys(t *testing.T) {
7575
assert.Len(t, results.Results, 1)
7676
}
7777

78+
func TestShouldFlagPotentialSecretWithoutTrimmingWhenLengthLessThan50Characters(t *testing.T) {
79+
const secret string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9asdfa"
80+
results := NewDetectionResults()
81+
content := []byte(secret)
82+
filename := "filename"
83+
additions := []gitrepo.Addition{gitrepo.NewAddition(filename, content)}
84+
filePath := additions[0].Path
85+
86+
NewFileContentDetector().Test(additions, talismanRCIgnore, results)
87+
expectedMessage := fmt.Sprintf("Expected file to not to contain base64 encoded texts such as: %s", secret)
88+
assert.True(t, results.HasFailures(), "Expected file to not to contain base64 encoded texts")
89+
assert.Equal(t, expectedMessage, getFailureMessages(results, filePath)[0])
90+
assert.Len(t, results.Results, 1)
91+
}
92+
7893
func TestShouldFlagPotentialJWT(t *testing.T) {
7994
const jwt string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzY290Y2guaW8iLCJleHAiOjEzMDA4MTkzODAsIm5hbWUiOiJDaHJpcyBTZXZpbGxlamEiLCJhZG1pbiI6dHJ1ZX0.03f329983b86f7d9a9f5fef85305880101d5e302afafa20154d094b229f757"
8095
results := NewDetectionResults()
@@ -84,7 +99,7 @@ func TestShouldFlagPotentialJWT(t *testing.T) {
8499
filePath := additions[0].Path
85100

86101
NewFileContentDetector().Test(additions, talismanRCIgnore, results)
87-
expectedMessage := fmt.Sprintf("Expected file to not to contain base64 encoded texts such as: %s", jwt)
102+
expectedMessage := fmt.Sprintf("Expected file to not to contain base64 encoded texts such as: %s", jwt[:47]+"...")
88103
assert.True(t, results.HasFailures(), "Expected file to not to contain base64 encoded texts")
89104
assert.Equal(t, expectedMessage, getFailureMessages(results, filePath)[0])
90105
assert.Len(t, results.Results, 1)
@@ -99,7 +114,7 @@ func TestShouldFlagPotentialSecretsWithinJavaCode(t *testing.T) {
99114
filePath := additions[0].Path
100115

101116
NewFileContentDetector().Test(additions, talismanRCIgnore, results)
102-
expectedMessage := "Expected file to not to contain base64 encoded texts such as: accessKey=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\";"
117+
expectedMessage := "Expected file to not to contain base64 encoded texts such as: accessKey=\"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPL..."
103118
assert.True(t, results.HasFailures(), "Expected file to not to contain base64 encoded texts")
104119
assert.Equal(t, expectedMessage, getFailureMessages(results, filePath)[0])
105120
assert.Len(t, results.Results, 1)

0 commit comments

Comments
 (0)