mirror of
https://github.com/lukaszraczylo/traefikoidc.git
synced 2026-10-18 04:47:28 +00:00
fix(oidcgate): gosec G304 — clean config path + native #nosec directive
The //nolint:gosec directive only suppresses golangci-lint; the standalone gosec GitHub Action uses its own '#nosec G304 -- reason' syntax. Use both filepath.Clean as canonical mitigation and the native directive.
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
"unicode"
|
"unicode"
|
||||||
|
|
||||||
@@ -39,7 +40,13 @@ var envScalarFields = []string{
|
|||||||
// Load reads YAML from path, applies env-var overrides, fills defaults,
|
// Load reads YAML from path, applies env-var overrides, fills defaults,
|
||||||
// and forces TrustForwardedURI=true so the library honors X-Forwarded-Uri.
|
// and forces TrustForwardedURI=true so the library honors X-Forwarded-Uri.
|
||||||
func Load(path string) (*Config, error) {
|
func Load(path string) (*Config, error) {
|
||||||
data, err := os.ReadFile(path) //nolint:gosec // path is a trusted operator-supplied config file path
|
// Clean the operator-supplied path to satisfy gosec G304 (file inclusion
|
||||||
|
// via variable). filepath.Clean strips traversal sequences and normalises
|
||||||
|
// the path; this is canonical mitigation for config files supplied via a
|
||||||
|
// CLI flag — the operator runs the daemon, so the input is trusted, but
|
||||||
|
// gosec's static analysis still flags variable paths without the cleanup.
|
||||||
|
clean := filepath.Clean(path)
|
||||||
|
data, err := os.ReadFile(clean) // #nosec G304 -- operator-supplied config path, cleaned above
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("read config: %w", err)
|
return nil, fmt.Errorf("read config: %w", err)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user