diff --git a/internal/config/config.go b/internal/config/config.go index 839cc48..49b5d25 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -299,7 +299,7 @@ func (c *Config) ensureStateDirWritable() error { keyStateDir, probePath, err) } - err = os.Remove(probePath) //nolint:gosec // G703: our own probe file, not user input + err = os.Remove(probePath) if err != nil { return fmt.Errorf("config key %q: cannot remove probe file %q: %w", keyStateDir, probePath, err) @@ -411,7 +411,6 @@ func loadConfigFile(log *slog.Logger, appName string) (*smartconfig.Config, erro for _, path := range configPaths { cleanPath := filepath.Clean(path) - //nolint:gosec // G703: config path is operator-supplied by design _, statErr := os.Stat(cleanPath) if statErr == nil { // A config file that exists but does not parse is a fatal diff --git a/internal/httpfetcher/httpfetcher.go b/internal/httpfetcher/httpfetcher.go index edd78d7..0abf1fa 100644 --- a/internal/httpfetcher/httpfetcher.go +++ b/internal/httpfetcher/httpfetcher.go @@ -233,7 +233,6 @@ func (f *HTTPFetcher) Fetch(ctx context.Context, url string) (*FetchResult, erro startTime := time.Now() - //nolint:gosec // G704: dialer enforces SSRF protection (ssrfSafeDialer) resp, err := f.client.Do(req) fetchDuration := time.Since(startTime) diff --git a/internal/imgcache/storage.go b/internal/imgcache/storage.go index 0577f42..55abdcc 100644 --- a/internal/imgcache/storage.go +++ b/internal/imgcache/storage.go @@ -94,23 +94,22 @@ func (s *ContentStorage) Store(r io.Reader) (ContentHash, int64, error) { _, err = tmpFile.Write(data) if err != nil { _ = tmpFile.Close() - _ = os.Remove(tmpPath) //nolint:gosec // G703: our own temp file, not user input + _ = os.Remove(tmpPath) return "", 0, fmt.Errorf("failed to write content: %w", err) } err = tmpFile.Close() if err != nil { - _ = os.Remove(tmpPath) //nolint:gosec // G703: our own temp file, not user input + _ = os.Remove(tmpPath) return "", 0, fmt.Errorf("failed to close temp file: %w", err) } // Atomic rename - //nolint:gosec // G703: tmp file is ours, path is derived from content hash err = os.Rename(filepath.Clean(tmpPath), filepath.Clean(path)) if err != nil { - _ = os.Remove(tmpPath) //nolint:gosec // G703: our own temp file, not user input + _ = os.Remove(tmpPath) return "", 0, fmt.Errorf("failed to rename temp file: %w", err) } @@ -254,23 +253,22 @@ func (s *MetadataStorage) Store( _, err = tmpFile.Write(data) if err != nil { _ = tmpFile.Close() - _ = os.Remove(tmpPath) //nolint:gosec // G703: our own temp file, not user input + _ = os.Remove(tmpPath) return fmt.Errorf("failed to write metadata: %w", err) } err = tmpFile.Close() if err != nil { - _ = os.Remove(tmpPath) //nolint:gosec // G703: our own temp file, not user input + _ = os.Remove(tmpPath) return fmt.Errorf("failed to close temp file: %w", err) } // Atomic rename - //nolint:gosec // G703: tmp file is ours, path is derived from cache key err = os.Rename(filepath.Clean(tmpPath), filepath.Clean(path)) if err != nil { - _ = os.Remove(tmpPath) //nolint:gosec // G703: our own temp file, not user input + _ = os.Remove(tmpPath) return fmt.Errorf("failed to rename temp file: %w", err) } @@ -412,23 +410,22 @@ func (s *VariantStorage) Store( _, err = tmpFile.Write(data) if err != nil { _ = tmpFile.Close() - _ = os.Remove(tmpPath) //nolint:gosec // G703: our own temp file, not user input + _ = os.Remove(tmpPath) return 0, fmt.Errorf("failed to write content: %w", err) } err = tmpFile.Close() if err != nil { - _ = os.Remove(tmpPath) //nolint:gosec // G703: our own temp file, not user input + _ = os.Remove(tmpPath) return 0, fmt.Errorf("failed to close temp file: %w", err) } // Atomic rename content - //nolint:gosec // G703: tmp file is ours, path is derived from cache key err = os.Rename(filepath.Clean(tmpPath), filepath.Clean(path)) if err != nil { - _ = os.Remove(tmpPath) //nolint:gosec // G703: our own temp file, not user input + _ = os.Remove(tmpPath) return 0, fmt.Errorf("failed to rename temp file: %w", err) }