Skip to content

Commit f6b40d9

Browse files
authored
Merge pull request #494 from projectdiscovery/improve_str_normalize_func
improve str normalize func
2 parents 7b58775 + 7383e38 commit f6b40d9

7 files changed

Lines changed: 72 additions & 16 deletions

File tree

channelutil/clone_join_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ func TestCloneCounter(t *testing.T) {
6262
cloner := channelutil.NewCloneChannels[struct{}](cloneOpts)
6363
err := cloner.Clone(context.TODO(), source, sinks...)
6464
if err != nil {
65-
t.Fatalf(err.Error())
65+
t.Fatalf("%s", err.Error())
6666
}
6767
}
6868
}

errkit/helpers.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ func Wrap(err error, message string) error {
8282
}
8383
x := &ErrorX{}
8484
parseError(x, err)
85-
x.Msgf(message)
85+
x.Msgf("%s", message)
8686
return x
8787
}
8888

@@ -148,7 +148,7 @@ func WithMessage(err error, message string) error {
148148
}
149149
x := &ErrorX{}
150150
parseError(x, err)
151-
x.Msgf(message)
151+
x.Msgf("%s", message)
152152
return x
153153
}
154154

errors/enriched.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,10 @@ func (e *enrichedError) Wrap(err ...error) Error {
6666
continue
6767
}
6868
if ee, ok := v.(*enrichedError); ok {
69-
_ = e.Msgf(ee.errString).WithLevel(ee.Level).WithTag(ee.Tags...)
69+
_ = e.Msgf("%s", ee.errString).WithLevel(ee.Level).WithTag(ee.Tags...)
7070
e.StackTrace += ee.StackTrace
7171
} else {
72-
_ = e.Msgf(v.Error())
72+
_ = e.Msgf("%s", v.Error())
7373
}
7474
}
7575
return e
@@ -131,10 +131,10 @@ func NewWithErr(err error) Error {
131131
return nil
132132
}
133133
if ee, ok := err.(*enrichedError); ok {
134-
x := New(ee.errString).WithTag(ee.Tags...).WithLevel(ee.Level)
134+
x := New("%s", ee.errString).WithTag(ee.Tags...).WithLevel(ee.Level)
135135
x.(*enrichedError).StackTrace = ee.StackTrace
136136
}
137-
return New(err.Error())
137+
return New("%s", err.Error())
138138
}
139139

140140
// NewWithTag creates an error with tag

exec/executil.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ func RunSafe(cmd ...string) (string, error) {
172172

173173
if err := cmdExec.Wait(); err != nil {
174174
if _, ok := err.(*exec.ExitError); ok {
175-
adbError = errkit.Append(err, errkit.New(string(errorData)), errkit.New("exit error"))
175+
adbError = errkit.Append(err, errkit.New("%s", string(errorData)), errkit.New("exit error"))
176176
outData = errorData
177177
} else {
178178
return "", errkit.Wrap(err, "process i/o error")
@@ -215,7 +215,7 @@ func RunSh(cmd ...string) (string, error) {
215215

216216
if err := cmdExec.Wait(); err != nil {
217217
if _, ok := err.(*exec.ExitError); ok {
218-
adbError = errkit.Append(err, errkit.New(string(errorData)), errkit.New("exit error"))
218+
adbError = errkit.Append(err, errkit.New("%s", string(errorData)), errkit.New("exit error"))
219219
outData = errorData
220220
} else {
221221
return "", errkit.Wrap(err, "process i/o error")
@@ -272,7 +272,7 @@ func RunPS(cmd string) (string, error) {
272272

273273
if err := cmdExec.Wait(); err != nil {
274274
if _, ok := err.(*exec.ExitError); ok {
275-
adbError = errkit.Append(err, errkit.New(string(errorData)), errkit.New("exit error"))
275+
adbError = errkit.Append(err, errkit.New("%s", string(errorData)), errkit.New("exit error"))
276276
outData = errorData
277277
} else {
278278
return "", errkit.Wrap(err, "process i/o error")

strings/strings_normalize.go

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,18 @@ package stringsutil
22

33
import (
44
"strings"
5+
"unicode"
56

67
"github.com/microcosm-cc/bluemonday"
78
)
89

910
type NormalizeOptions struct {
10-
TrimSpaces bool
11-
StripHTML bool
12-
Lowercase bool
13-
Uppercase bool
11+
TrimSpaces bool
12+
TrimCutset string
13+
StripHTML bool
14+
Lowercase bool
15+
Uppercase bool
16+
StripComments bool
1417
}
1518

1619
var DefaultNormalizeOptions NormalizeOptions = NormalizeOptions{
@@ -25,6 +28,10 @@ func NormalizeWithOptions(data string, options NormalizeOptions) string {
2528
data = strings.TrimSpace(data)
2629
}
2730

31+
if options.TrimCutset != "" {
32+
data = strings.Trim(data, options.TrimCutset)
33+
}
34+
2835
if options.Lowercase {
2936
data = strings.ToLower(data)
3037
}
@@ -37,6 +44,12 @@ func NormalizeWithOptions(data string, options NormalizeOptions) string {
3744
data = HTMLPolicy.Sanitize(data)
3845
}
3946

47+
if options.StripComments {
48+
if cut := strings.IndexAny(data, "#"); cut >= 0 {
49+
data = strings.TrimRightFunc(data[:cut], unicode.IsSpace)
50+
}
51+
}
52+
4053
return data
4154
}
4255

strings/stringsutil_test.go

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -424,3 +424,46 @@ func TestContainsAllI(t *testing.T) {
424424
require.Equal(t, test.result, res)
425425
}
426426
}
427+
428+
func TestNormalizeWithOptions(t *testing.T) {
429+
tests := []struct {
430+
data string
431+
options NormalizeOptions
432+
result string
433+
}{
434+
{
435+
data: " Hello World! ",
436+
options: NormalizeOptions{TrimSpaces: true},
437+
result: "Hello World!",
438+
},
439+
{
440+
data: "\n\t\"'` Hello World! \n\t\"'` ",
441+
options: NormalizeOptions{TrimCutset: "\n\t\"'` "},
442+
result: "Hello World!",
443+
},
444+
{
445+
data: " Hello World! ",
446+
options: NormalizeOptions{Lowercase: true},
447+
result: " hello world! ",
448+
},
449+
{
450+
data: " Hello World! ",
451+
options: NormalizeOptions{Uppercase: true},
452+
result: " HELLO WORLD! ",
453+
},
454+
{
455+
data: "<b>Hello World!</b>",
456+
options: NormalizeOptions{StripHTML: true},
457+
result: "Hello World!",
458+
},
459+
{
460+
data: "Hello World! # Comment",
461+
options: NormalizeOptions{StripComments: true},
462+
result: "Hello World!",
463+
},
464+
}
465+
for _, test := range tests {
466+
res := NormalizeWithOptions(test.data, test.options)
467+
require.Equal(t, test.result, res)
468+
}
469+
}

update/update.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,9 +143,9 @@ func GetToolVersionCallback(toolName, version string) func() (string, error) {
143143
if toolDetails.Version == "" {
144144
msg := fmt.Sprintf("something went wrong, expected version string but got empty string for GET `%v` response `%v`", updateURL, string(body))
145145
if err == nil {
146-
return "", errorutil.New(msg)
146+
return "", errorutil.New("%s", msg)
147147
}
148-
return "", errorutil.NewWithErr(err).Msgf(msg)
148+
return "", errorutil.NewWithErr(err).Msgf("%s", msg)
149149
}
150150
return toolDetails.Version, nil
151151
}

0 commit comments

Comments
 (0)