diff --git a/.github/workflows/security.yml b/.github/workflows/security.yml index 6cfcc42..d36c048 100644 --- a/.github/workflows/security.yml +++ b/.github/workflows/security.yml @@ -21,16 +21,34 @@ jobs: - name: Checkout code uses: actions/checkout@v4 + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: '1.23' + - name: Run Gosec Security Scanner uses: securego/gosec@master with: args: '-no-fail -fmt json -out gosec-report.json ./...' - - name: Upload SARIF file - uses: github/codeql-action/upload-sarif@v3 + - name: Upload gosec report if: always() + uses: actions/upload-artifact@v4 with: - sarif_file: gosec-report.json + name: gosec-report + path: gosec-report.json + retention-days: 30 + + - name: Display gosec results + if: always() + run: | + if [ -f gosec-report.json ]; then + echo "📊 Gosec Security Scan Results:" + cat gosec-report.json | jq -r '.Stats // empty' || echo "No stats available" + echo "" + echo "Issues found:" + cat gosec-report.json | jq -r '.Issues[]? | "\(.severity | ascii_upcase): \(.rule_id) - \(.details)"' || echo "No issues found" + fi govulncheck: name: Vulnerability Check (govulncheck) diff --git a/.golangci.yml b/.golangci.yml index 3ca335d..ff0450d 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -18,7 +18,7 @@ linters: - unparam - gocritic - gosec - - exportloopref + - copyloopvar - goconst - gocyclo - dupl @@ -34,7 +34,7 @@ linters: - errorlint - exhaustive - godot - - goerr113 + - err113 - mnd - goprintffuncname - nlreturn diff --git a/server/media.go b/server/media.go index 8c7baa0..3852816 100644 --- a/server/media.go +++ b/server/media.go @@ -369,14 +369,14 @@ func (s *Server) HandleGetVideoSources(body interface{}) (interface{}, error) { func unmarshalBody(body interface{}, target interface{}) error { var bodyXML []byte var err error - + // If body is already []byte, use it directly if b, ok := body.([]byte); ok { bodyXML = b } else { bodyXML, err = xml.Marshal(body) if err != nil { - return err + return fmt.Errorf("failed to marshal XML: %w", err) } } return xml.Unmarshal(bodyXML, target)