fix: preserve original symlink FileInfo on Lstat failure

Save the original symlink info before os.Lstat(resolved) overwrites
it, so walkFn receives the symlink's FileInfo (not nil) on error.
This allows .helmignore pattern matching to work correctly for
broken symlinks.

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 67e71e18ed
commit bf2c8c4af0

@ -73,10 +73,11 @@ 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.
slog.Info("found symbolic link in path. Contents of linked file included and used", "path", path, "resolved", resolved)
originalInfo := info
if info, err = os.Lstat(resolved); err != nil {
// 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)
return walkFn(path, originalInfo, err)
}
if err := symwalk(path, info, walkFn); err != nil && err != filepath.SkipDir {
return err

Loading…
Cancel
Save