Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: use location RealPath not String() for match sorting #1950

Merged
merged 1 commit into from
Jun 18, 2024

Conversation

luhring
Copy link
Contributor

@luhring luhring commented Jun 17, 2024

This is a follow-up to #1944. Using String() works mostly for sorting, but I expected String() to return a simple filepath, and instead it returns a funky string like: Location<id=72 RealPath="usr/lib/go/pkg/tool/linux_amd64/buildid">.

This causes issues because the id=<...> value will be sorted lexically, and more than that, it looks like for most paths in Syft, this id value is controlled by an auto-incrementing global variable, so its value will vary quite widely across different execution contexts.

(I'm not sure if anything is depending on this kind of Location< .... > string value... If not, it could potentially be worth considering changing String() to return the RealPath or AccessPath to be friendlier to library consumers.)

This PR updates the sorting logic to use the RealPath for now, which should be stable. Holler if this assumption is incorrect for any reason!

Signed-off-by: Dan Luhring <dluhring@chainguard.dev>
@wagoodman wagoodman added the bug Something isn't working label Jun 18, 2024
@wagoodman wagoodman merged commit cb18897 into anchore:main Jun 18, 2024
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants