Skip to content

False positive - Log entries created from user input #10922

Open
@davidhadas

Description

@davidhadas

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...

Metadata

Metadata

Assignees

No one assigned

    Labels

    GoquestionFurther information is requested

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions