Fix relative link resolution for ldcache

Signed-off-by: Evan Lezar <elezar@nvidia.com>
This commit is contained in:
Evan Lezar 2023-01-31 12:43:58 +01:00
parent d091d3c7f4
commit 14bcebd8b7

View File

@ -302,11 +302,14 @@ func (c *ldcache) resolve(target string) (string, error) {
return "", fmt.Errorf("failed to resolve symlink: %v", err) return "", fmt.Errorf("failed to resolve symlink: %v", err)
} }
if filepath.IsAbs(link) { // We return absolute paths for all targets
c.logger.Debugf("Found absolute link %v", link) if !filepath.IsAbs(link) || strings.HasPrefix(link, ".") {
link = filepath.Join(c.root, link) link = filepath.Join(filepath.Dir(target), link)
} }
// Ensure that the returned path is relative to the root.
link = filepath.Join(c.root, link)
c.logger.Debugf("Resolved link: '%v' => '%v'", name, link) c.logger.Debugf("Resolved link: '%v' => '%v'", name, link)
return link, nil return link, nil
} }