[release/v1.8.x] Improve path handling in source reconcilers#2055
Merged
Conversation
Bucket object keys are external input and may contain arbitrary characters. Joining them with the reconciler's working directory through `filepath.Join` applies `filepath.Clean`, which collapses parent-directory segments and can yield a destination outside the working directory. `securejoin.SecureJoin` resolves the key while keeping the result within the working directory, matching the pattern already used elsewhere in the controllers for similar joins (e.g. GitRepository include paths). Assisted-by: claude-code/opus-4.7 Signed-off-by: Hidde Beydals <hidde@hhh.computer> (cherry picked from commit 6d2d86d)
When validating that the paths listed in `spec.sparseCheckout` exist in the cloned working tree, resolve each entry with `securejoin.SecureJoin` instead of `filepath.Join`. `filepath.Join` collapses parent-directory segments via `filepath.Clean`, so a configured path like `../foo` would have been checked against a location outside the working tree, masking a missing entry behind an unrelated filesystem stat. SecureJoin keeps the resolved path inside the working tree, matching the pattern already used for include paths elsewhere in the controller. Assisted-by: claude-code/opus-4.7 Signed-off-by: Hidde Beydals <hidde@hhh.computer> (cherry picked from commit f5fe034)
hiddeco
approved these changes
May 19, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Automated backport to
release/v1.8.x, triggered by a label in #2054.