Open
Description
Description of the issue
in-place sanitization code is not recognized and constantly reports false positives with "Log entries created from user input"
For example, when using the following sanitization, logging sanitized user input produces a false positive.
// contain at most 60 characters
// contain only lowercase alphanumeric characters or '-'
// start with an alphanumeric character
// end with an alphanumeric character
func Sanitize(in string) string {
if len(in) > 60 {
return ""
}
var alphanumeric bool
for i, r := range in {
if (97 <= r && r <= 122) || (48 <= r && r <= 57) {
alphanumeric = true
continue
}
if r == 45 {
alphanumeric = false
// first letter
if i == 0 {
return ""
}
continue
}
return ""
}
// last letter
if !alphanumeric {
return ""
}
return in
}
is there a workaround or a way to signal to CodeQL that this is in-place sanitization and no alert is needed?
That is, without moving to a less efficient non-in-place sanitization...