fix(sanitize): improve handling for newline tabs etc (#1733)

* fix(sanitize): filter properly \t,,, / etc

* jesus christ.

* bah. probably helps if a human reads the tests.

* k done.

* should be safe now?

* edna?

* real life man
This commit is contained in:
Kyle Sanderson 2024-09-19 07:44:19 -07:00 committed by GitHub
parent a4452e4fdc
commit e9cd6b0049
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 172 additions and 16 deletions

View file

@ -1,6 +1,8 @@
package sanitize
import "strings"
import (
"strings"
)
func String(str string) string {
str = strings.TrimSpace(str)
@ -8,12 +10,48 @@ func String(str string) string {
}
func FilterString(str string) string {
str = strings.TrimSpace(str)
str = strings.Trim(str, ",")
// replace newline with comma
str = strings.ReplaceAll(str, "\r", ",")
str = strings.ReplaceAll(str, "\n", ",")
str = strings.ReplaceAll(str, ",,", ",")
str = strings.ReplaceAll(str, "\v", ",")
str = strings.ReplaceAll(str, "\t", " ")
str = strings.ReplaceAll(str, "\f", "")
str = repeatedReplaceAll(str, " ", " ")
str = repeatedReplaceAll(str, ", ", ",")
str = repeatedReplaceAll(str, " ,", ",")
str = repeatedReplaceAll(str, ",,", ",")
str = strings.Trim(str, ", ")
return str
}
func repeatedReplaceAll(src, old, new string) string {
for i := 0; i != len(src); {
i = len(src)
src = strings.ReplaceAll(src, old, new)
}
return src
}
/*
var interestingChars = regexp.MustCompile(`[^,\r\n\t\f\v]+`)
func FilterString(str string) string {
str = strings.Join(interestingChars.FindAllString(str, -1), ",")
for i := 0; i != len(str); {
i = len(str)
str = strings.ReplaceAll(str, " ", " ")
}
str = strings.ReplaceAll(str, " ,", ",")
str = strings.ReplaceAll(str, ", ", ",")
for i := 0; i != len(str); {
i = len(str)
str = strings.ReplaceAll(str, ",,", ",")
}
str = strings.Trim(str, ", ")
return str
}
*/