Skip to content

v5: General Improvements#203

Merged
pjbgf merged 5 commits into
go-git:releases/v5.xfrom
pjbgf:v5-improvements
May 5, 2026
Merged

v5: General Improvements#203
pjbgf merged 5 commits into
go-git:releases/v5.xfrom
pjbgf:v5-improvements

Conversation

@pjbgf

@pjbgf pjbgf commented May 5, 2026

Copy link
Copy Markdown
Member

Back-port of #204.

pjbgf added 4 commits May 5, 2026 10:25
Signed-off-by: Paulo Gomes <paulo@entire.io>
Signed-off-by: Paulo Gomes <paulo@entire.io>
Signed-off-by: Paulo Gomes <paulo@entire.io>
Use Lstat when RemoveAll falls back to directory traversal after an
initial Remove failure. This prevents a symlink from being followed and
recursed into when Remove fails.

Signed-off-by: Paulo Gomes <paulo@entire.io>
Copilot AI review requested due to automatic review settings May 5, 2026 10:48

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR tightens filesystem path handling and symlink behavior across helpers, with a focus on making chroot boundary enforcement more robust and preventing incorrect mountpoint routing. It also adds targeted regression tests to validate the updated semantics.

Changes:

  • Update chroot helper path resolution to detect and block symlink-based boundary crossings (including loop handling).
  • Improve mount helper mountpoint detection to avoid treating same-prefix paths (e.g. foo vs foobar) as inside the mount.
  • Adjust util.RemoveAll to avoid recursing into symlinks (preferring Lstat when available) and add/extend tests for the new behavior.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
util/util.go Makes RemoveAll safer around symlinks by using an lstat helper and avoiding recursion into symlink paths.
util/util_test.go Minor formatting cleanup in tests (no behavior change).
test/fs.go Updates chroot+symlink conformance tests to validate Lstat vs Stat boundary behavior.
memfs/memory_test.go Adds regression tests for chroot boundary enforcement via symlinks and for symlink loop detection.
helper/mount/mount.go Fixes mountpoint matching logic to require an exact match or a path-separator boundary; also corrects a typo in a comment (partially).
helper/mount/mount_test.go Adds coverage to ensure mountpoint-prefix paths are not misrouted, and tests the updated mountpoint predicate.
helper/chroot/chroot.go Introduces symlink-following resolution with boundary checks and a symlink-follow limit; adjusts Stat to ensure returned FileInfo.Name() matches the requested path.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread helper/mount/mount.go
Comment thread helper/chroot/chroot.go
Signed-off-by: Paulo Gomes <paulo@entire.io>
@pjbgf pjbgf merged commit 427b27f into go-git:releases/v5.x May 5, 2026
11 checks passed
@pjbgf pjbgf deleted the v5-improvements branch May 5, 2026 11:54
Maks1mS pushed a commit to stplr-dev/stplr that referenced this pull request May 10, 2026
This PR contains the following updates:

| Package | Type | Update | Change | OpenSSF |
|---|---|---|---|---|
| [github.com/go-git/go-billy/v5](https://github.com/go-git/go-billy) | require | minor | `v5.8.0` → `v5.9.0` | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/go-git/go-billy/badge)](https://securityscorecards.dev/viewer/?uri=github.com/go-git/go-billy) |

---

> ⚠️ **Warning**
>
> Some dependencies could not be looked up. Check the [Dependency Dashboard](issues/23) for more information.

---

### Release Notes

<details>
<summary>go-git/go-billy (github.com/go-git/go-billy/v5)</summary>

### [`v5.9.0`](https://github.com/go-git/go-billy/releases/tag/v5.9.0)

[Compare Source](go-git/go-billy@v5.8.0...v5.9.0)

#### What's Changed

- Use path.Clean instead of filepath.Clean in iofs.Open by [@&#8203;puerco](https://github.com/puerco) in [#&#8203;197](go-git/go-billy#197)
- Deprecate ChrootOS in favour of BoundOS by [@&#8203;pjbgf](https://github.com/pjbgf) in [#&#8203;201](go-git/go-billy#201)
- General Improvements by [@&#8203;pjbgf](https://github.com/pjbgf) in [#&#8203;203](go-git/go-billy#203)
- osfs: ChrootOS eval baseDir on creation by [@&#8203;pjbgf](https://github.com/pjbgf) in [#&#8203;205](go-git/go-billy#205)
- Run go-git tests as part of integration tests by [@&#8203;pjbgf](https://github.com/pjbgf) in [#&#8203;206](go-git/go-billy#206)

**Full Changelog**: <go-git/go-billy@v5.8.0...v5.9.0>

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At 12:00 AM through 04:59 AM and 10:00 PM through 11:59 PM, Monday through Friday (`* 0-4,22-23 * * 1-5`)
  - Only on Sunday and Saturday (`* * * * 0,6`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzIuMyIsInVwZGF0ZWRJblZlciI6IjQzLjEzMi4zIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJLaW5kL0RlcGVuZGVuY2llcyJdfQ==-->

Reviewed-on: https://altlinux.space/stapler/stplr/pulls/426
@glaubitz

glaubitz commented Jun 2, 2026

Copy link
Copy Markdown

Does any of these commits fix CVE-2026-44740?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants