diff --git a/.github/workflows/fuzz.yml b/.github/workflows/fuzz.yml index 6ff09bf..39e9c99 100644 --- a/.github/workflows/fuzz.yml +++ b/.github/workflows/fuzz.yml @@ -3,21 +3,34 @@ on: [pull_request] jobs: Fuzzing: runs-on: ubuntu-latest + permissions: + security-events: write steps: - name: Build Fuzzers + id: build uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master with: oss-fuzz-project-name: 'gonids' + language: go dry-run: false - name: Run Fuzzers uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master with: oss-fuzz-project-name: 'gonids' + language: go fuzz-seconds: 600 dry-run: false + output-sarif: true - name: Upload Crash - uses: actions/upload-artifact@v1 - if: failure() + uses: actions/upload-artifact@v4 + if: failure() && steps.build.outcome == 'success' with: name: artifacts path: ./out/artifacts + - name: Upload Sarif + if: always() && steps.build.outcome == 'success' + uses: github/codeql-action/upload-sarif@v3 + with: + # Path to SARIF file relative to the root of the repository + sarif_file: cifuzz-sarif/results.sarif + checkout_path: cifuzz-sarif diff --git a/lex.go b/lex.go index 05eadef..6d6323b 100644 --- a/lex.go +++ b/lex.go @@ -265,7 +265,7 @@ func lexProtocol(l *lexer) stateFn { case r == ' ': l.emit(itemProtocol, true) return lexSourceAddress - case !(unicode.IsLetter(r) || unicode.IsDigit(r) || (l.len() > 0 && r == '-')): + case !unicode.IsLetter(r) && !unicode.IsDigit(r) && l.len() > 0 && r != '-': return l.errorf("invalid character %q for a rule protocol", r) } } diff --git a/parser.go b/parser.go index 3b4a9a3..d64d869 100644 --- a/parser.go +++ b/parser.go @@ -111,7 +111,7 @@ func parseContent(content string) ([]byte, error) { b = hexRE.ReplaceAllStringFunc(b, func(h string) string { - r, err := hex.DecodeString(strings.Replace(strings.Trim(h, "|"), " ", "", -1)) + r, err := hex.DecodeString(strings.ReplaceAll(strings.Trim(h, "|"), " ", "")) if err != nil { panic("invalid hexRE regexp") } @@ -408,7 +408,7 @@ func unquote(s string) string { if strings.IndexByte(s, '"') < 0 { return s } - return strings.Replace(s, `\"`, `"`, -1) + return strings.ReplaceAll(s, `\"`, `"`) } func inSlice(str string, strings []string) bool { diff --git a/rule.go b/rule.go index c4c5ca3..de1e988 100644 --- a/rule.go +++ b/rule.go @@ -850,7 +850,7 @@ func (p PCRE) String() string { // escape quote signs, if necessary if bytes.IndexByte(pattern, '"') > -1 { - pattern = bytes.Replace(pattern, []byte(`"`), []byte(`\"`), -1) + pattern = bytes.ReplaceAll(pattern, []byte(`"`), []byte(`\"`)) } var s strings.Builder