diff --git a/syft/internal/fileresolver/directory_indexer.go b/syft/internal/fileresolver/directory_indexer.go index 47349a445..01f332a3d 100644 --- a/syft/internal/fileresolver/directory_indexer.go +++ b/syft/internal/fileresolver/directory_indexer.go @@ -332,7 +332,19 @@ func (r directoryIndexer) addFileToIndex(p string, info os.FileInfo) error { func (r directoryIndexer) addSymlinkToIndex(p string, info os.FileInfo) (string, error) { linkTarget, err := os.Readlink(p) if err != nil { - return "", fmt.Errorf("unable to readlink for path=%q: %w", p, err) + if runtime.GOOS == WindowsOS { + p = posixToWindows(p) + } + + linkTarget, err = filepath.EvalSymlinks(p) + + if runtime.GOOS == WindowsOS { + p = windowsToPosix(p) + } + + if err != nil { + return "", fmt.Errorf("unable to readlink for path=%q: %w", p, err) + } } if filepath.IsAbs(linkTarget) {