fix: address review feedback on error routing

- Route os.Lstat(resolved) errors through walkFn with original symlink
  info, so callers can decide whether to skip based on .helmignore
- Keep info reassignment from Lstat to prevent infinite recursion
  on symlink-to-directory paths

Signed-off-by: Kartik Suryavanshi <kartik.suryavanshi@outlook.com>
Signed-off-by: Kartik Suryavanshi <158498247+KartikSuryavanshi@users.noreply.github.com>
pull/32264/head
Kartik Suryavanshi 3 months ago
parent 8bc1c04c11
commit 67e71e18ed

@ -74,7 +74,9 @@ func symwalk(path string, info os.FileInfo, walkFn filepath.WalkFunc) error {
// This log message is to highlight a symlink that is being used within a chart, symlinks can be used for nefarious reasons. // This log message is to highlight a symlink that is being used within a chart, symlinks can be used for nefarious reasons.
slog.Info("found symbolic link in path. Contents of linked file included and used", "path", path, "resolved", resolved) slog.Info("found symbolic link in path. Contents of linked file included and used", "path", path, "resolved", resolved)
if info, err = os.Lstat(resolved); err != nil { if info, err = os.Lstat(resolved); err != nil {
return err // Route through walkFn with the original symlink info so callers
// can decide whether to skip it based on .helmignore rules.
return walkFn(path, info, err)
} }
if err := symwalk(path, info, walkFn); err != nil && err != filepath.SkipDir { if err := symwalk(path, info, walkFn); err != nil && err != filepath.SkipDir {
return err return err

Loading…
Cancel
Save