Commit Graph
5697 Commits
Author SHA1 Message Date
Sebastiaan van Stijn d1296c346d build(deps): github.com/moby/moby/client v0.4.0, moby/api v1.54.1
Signed-off-by: Sebastiaan van Stijn <[email protected]>
2026-04-03 16:53:26 +02:00
Lidang-Jiang 63601ebbb3 test: migrate tar_test.go from testify to gotest.tools/v3
Signed-off-by: Lidang-Jiang <[email protected]>
2026-04-03 12:29:07 +02:00
Lidang-Jiang 6ce3fb57a8 fix: return error on non-ErrNotExist stat failures in Tar.Sync()
Previously, Sync() only checked for fs.ErrNotExist when classifying
paths into copy vs delete. Non-NotExist stat errors (e.g. EACCES,
EIO) caused the condition to be false, falling through to the else
clause which incorrectly treated the path as copyable. This masked
real errors and led to cryptic failures downstream.

Restructure the condition into a three-way branch:
- err == nil → copy
- ErrNotExist → delete
- other errors → return immediately with context

This follows the pattern already used by entriesForPath() in the
same file.

Fixes #13654

Signed-off-by: Lidang Jiang <[email protected]>
Signed-off-by: Lidang-Jiang <[email protected]>
2026-04-03 12:29:07 +02:00
dependabot[bot] c1aefc74c8 build(deps): bump github.com/containerd/platforms
Bumps [github.com/containerd/platforms](https://github.com/containerd/platforms) from 1.0.0-rc.3 to 1.0.0-rc.4.
- [Release notes](https://github.com/containerd/platforms/releases)
- [Commits](https://github.com/containerd/platforms/compare/v1.0.0-rc.3...v1.0.0-rc.4)

---
updated-dependencies:
- dependency-name: github.com/containerd/platforms
  dependency-version: 1.0.0-rc.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
2026-04-02 21:32:33 +02:00
dependabot[bot] 148ad64eea build(deps): bump google.golang.org/grpc from 1.79.3 to 1.80.0
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.79.3 to 1.80.0.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.79.3...v1.80.0)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-version: 1.80.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
2026-04-02 21:17:16 +02:00
Sebastiaan van Stijn 3ecc082946 build(deps): bump github.com/docker/buildx v0.33.0, buildkit v0.29.0
Signed-off-by: Sebastiaan van Stijn <[email protected]>
2026-04-01 08:48:39 +02:00
Ishwar 1e3f4d0f4a fix: update e2e tests to expect exit code 130 on user decline
Signed-off-by: Ishwar <[email protected]>
2026-03-31 20:35:07 +02:00
Ishwar 37cbf7a9cd test: repurpose decline test to cover sensitive data detection path
Renames test to Test_preChecks_sensitive_data_detected_decline. Uses a temporary .env file with an AWS token to reliably trigger the DefangLabs secret detector, and confirms that preChecks correctly aborts early on user decline.

Signed-off-by: Ishwar <[email protected]>
2026-03-31 20:35:07 +02:00
Ishwar 9c5fd50989 publish: return ErrPublishAborted when user declines interactive prompts
Signed-off-by: Ishwar <[email protected]>
2026-03-31 20:35:07 +02:00
Ricardo Branco 73d8a6d57d test: use random host port for dind TLS build test
Signed-off-by: Ricardo Branco <[email protected]>
2026-03-31 19:10:35 +02:00
Sebastiaan van Stijn 92a7ac1fa2 fix mixed assertion libraries in tests
Before this, assertion libraries were mixed, sometimes
even in the same file.

    git grep -l '"gotest.tools/v3/' | wc -l
    75
    git grep -l '"github.com/stretchr/testify' | wc -l
    24

Signed-off-by: Sebastiaan van Stijn <[email protected]>
2026-03-31 17:32:51 +02:00
jarek a97738de7d fix: add NetworkConnect fallback for API < 1.44
For Docker daemons older than API 1.44, the extra networks omitted from
ContainerCreate must be connected individually after creation via
NetworkConnect. If any NetworkConnect call fails, remove the freshly
created container to prevent orphans.

Add two tests:
- TestCreateMobyContainerLegacyAPI: happy path verifying NetworkConnect
  is called for the secondary network on API 1.43
- TestCreateMobyContainerLegacyAPI_NetworkConnectFailure: verifies
  ContainerRemove is called with Force when NetworkConnect fails

Signed-off-by: jarek <[email protected]>
2026-03-31 15:44:00 +02:00
jarek 3b1004c4d9 fix: gate extra EndpointsConfig behind API >= 1.44
Before API 1.44 (Docker Engine 25.0), ContainerCreate only accepted a
single EndpointsConfig entry. Passing multiple entries silently drops
all but one network, leaving containers under-connected on older daemons
such as Docker 20.10 or Synology DSM 7.1/7.2.

Add apiVersion144 constant and wrap the secondary-networks loop in
defaultNetworkSettings so that only the primary network is included in
the ContainerCreate call when the negotiated API version is below 1.44.

Signed-off-by: jarek <[email protected]>
2026-03-31 15:44:00 +02:00
Guillaume LoursandClaude Opus 4.6 9cab43945a refactor: merge RuntimeVersion and CurrentAPIVersion into RuntimeAPIVersion
After API negotiation, Compose should only rely on the negotiated version
and never use the daemon's raw max version for request shaping. Merge both
functions into a single RuntimeAPIVersion that negotiates via Ping and
returns ClientVersion, erroring if the client reports an empty version
instead of silently falling back to ServerVersion.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Signed-off-by: Guillaume Lours <[email protected]>
2026-03-31 14:39:37 +02:00
Guillaume LoursandClaude Opus 4.6 ef836856fe fix: don't cache transient errors in version negotiation
Replace sync.Once with sync.Mutex so that only successful version
lookups are cached. Errors (context cancellation, network blips) are
returned without caching, allowing subsequent calls to retry.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Signed-off-by: Guillaume Lours <[email protected]>
2026-03-31 14:39:37 +02:00
Guillaume LoursandClaude Opus 4.6 c7d1a6030e fix: use pointer receivers for composeService methods with sync.Once fields
Moving runtimeVersionCache from a package-level var to instance fields on
composeService caused copylocks violations in methods using value receivers,
since sync.Once contains sync.noCopy. Switch the 4 affected methods to
pointer receivers.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Signed-off-by: Guillaume Lours <[email protected]>
2026-03-31 14:39:37 +02:00
Guillaume LoursandClaude Opus 4.6 5f6f35ed22 pkg/compose: use negotiated API version for request shaping
Move runtimeVersionCache from a package-level var to per-instance fields
on composeService and add CurrentAPIVersion() that negotiates via Ping
before returning the client version.

Switch getCreateConfigs and buildContainerVolumes to use
CurrentAPIVersion so that version-gated request shaping matches what
the daemon actually validates against (the negotiated API version from
the request path, not the server's max capability).

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Signed-off-by: Guillaume Lours <[email protected]>
2026-03-31 14:39:37 +02:00
dependabot[bot] 3d2d03cd39 build(deps): bump github.com/hashicorp/go-version from 1.8.0 to 1.9.0
Bumps [github.com/hashicorp/go-version](https://github.com/hashicorp/go-version) from 1.8.0 to 1.9.0.
- [Release notes](https://github.com/hashicorp/go-version/releases)
- [Changelog](https://github.com/hashicorp/go-version/blob/main/CHANGELOG.md)
- [Commits](https://github.com/hashicorp/go-version/compare/v1.8.0...v1.9.0)

---
updated-dependencies:
- dependency-name: github.com/hashicorp/go-version
  dependency-version: 1.9.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
2026-03-31 11:14:29 +02:00
Guillaume LoursandClaude Opus 4.6 7aeb90c9a3 Skip PR review workflow for Dependabot PRs
Dependabot PRs don't have access to the secrets required by the
cagent-action reusable workflow (CAGENT_ORG_MEMBERSHIP_TOKEN), causing
the org membership check to fail with "github-token not supplied".

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Signed-off-by: Guillaume Lours <[email protected]>
2026-03-31 10:58:45 +02:00
pawannn e5c6b9c3b7 fix: return error from ExecStart instead of nil in runWaitExec
Signed-off-by: pawannn <[email protected]>
2026-03-30 16:06:26 +02:00
pawannn b529a3ca5b fix: add build tag to hook_test.go to fix Windows build failure (#13682)
Signed-off-by: pawannn <[email protected]>
2026-03-30 16:06:26 +02:00
dependabot[bot] fa9762b15d build(deps): bump github.com/docker/cli
Bumps [github.com/docker/cli](https://github.com/docker/cli) from 29.2.1+incompatible to 29.3.1+incompatible.
- [Commits](https://github.com/docker/cli/compare/v29.2.1...v29.3.1)

---
updated-dependencies:
- dependency-name: github.com/docker/cli
  dependency-version: 29.3.1+incompatible
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
2026-03-30 10:35:59 +02:00
Sebastiaan van Stijn 5bbdd239df pkg/compose: fix TestRunHook_ConsoleSize on macOS
containerd/console is broken on macOS, and panics; use creack/pty
instead for this test.

Signed-off-by: Sebastiaan van Stijn <[email protected]>
2026-03-30 09:43:35 +02:00
Mohamed-Moumni e742d09711 fix: initialize and pass envFiles map in processExtends
Signed-off-by: Mohamed-Moumni <[email protected]>
2026-03-27 16:02:01 +01:00
Samaresh Kumar Singh 612b8c567e fix: preserve ssh:// URL scheme in dockerFilePath
filepath.Join cleans its arguments, collapsing the double slash in
ssh:// URLs to a single slash (ssh:/), corrupting the scheme before
it reaches buildx. Return the dockerfile as-is for any URL-schemed
context, matching the existing behaviour for git:// and https:// URLs.

Fixes the issue #13668

Signed-off-by: Samaresh Kumar Singh <[email protected]>
2026-03-27 10:12:59 +01:00
Guillaume LoursandClaude Opus 4.6 ef86a6ef0f build(deps): bump go.opentelemetry.io/otel/sdk from 1.39.0 to 1.42.0
Fixes CVE-2026-24051 (PATH hijacking in otel SDK).
Bumps all otel packages to v1.42.0 for consistency.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Signed-off-by: Guillaume Lours <[email protected]>
2026-03-25 10:21:00 +01:00
Guillaume LoursandClaude Opus 4.6 0de456bc76 chore: bump GitHub Actions to latest versions
- actions/checkout v4 -> v6
- actions/upload-artifact v4/v6 -> v7
- actions/download-artifact v4/v7 -> v8
- docker/setup-buildx-action v3 -> v4
- docker/bake-action v6 -> v7
- actions/stale v9 -> v10
- actions/create-github-app-token v1 -> v3
- actions/github-script v7 -> v8
- ossf/scorecard-action v2.4.0 -> v2.4.3
- ncipollo/release-action v1.10.0 -> v1.21.0
- mxschmitt/action-tmate v3.11 -> v3.23
- codecov/codecov-action, test-summary/action, github/codeql-action: bump to latest patch

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Signed-off-by: Guillaume Lours <[email protected]>
2026-03-25 10:19:36 +01:00
Guillaume Lours 56e2dba366 chore: pin GitHub Actions to commit SHA, remove pr-review workflow
- Pin all action references to full commit SHA instead of mutable
  version tags. Tag retained as inline comment for readability.
- Remove pr-review.yml workflow.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Signed-off-by: Guillaume Lours <[email protected]>

# Conflicts:
#	.github/workflows/pr-review.yml
2026-03-25 10:19:36 +01:00
dependabot[bot] 0c39d8a20f build(deps): bump github.com/moby/patternmatcher from 0.6.0 to 0.6.1
Bumps [github.com/moby/patternmatcher](https://github.com/moby/patternmatcher) from 0.6.0 to 0.6.1.
- [Release notes](https://github.com/moby/patternmatcher/releases)
- [Commits](https://github.com/moby/patternmatcher/compare/v0.6.0...v0.6.1)

---
updated-dependencies:
- dependency-name: github.com/moby/patternmatcher
  dependency-version: 0.6.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
2026-03-25 10:15:05 +01:00
CodeLoopdroid a57320fdf5 Fix up attach filtering
Signed-off-by: CodeLoopdroid <[email protected]>
2026-03-25 10:07:02 +01:00
Derek MislerandCopilot 46d75d0bea Update .github/workflows/pr-review.yml
Co-authored-by: Copilot <[email protected]>
Signed-off-by: Derek Misler <[email protected]>
2026-03-25 09:52:29 +01:00
Derek MislerandCopilot bd351d7f96 Update .github/workflows/pr-review.yml
Co-authored-by: Copilot <[email protected]>
Signed-off-by: Derek Misler <[email protected]>
2026-03-25 09:52:29 +01:00
Derek Misler ece1886824 update cagent-action to latest (with better permissions)
Signed-off-by: Derek Misler <[email protected]>
2026-03-25 09:52:29 +01:00
Guillaume Lours 2b9f60ba58 Add AI-powered PR review workflow via docker/cagent-action
Introduce a GitHub Actions workflow that triggers an AI-powered code
  review on pull requests using docker/cagent-action's reusable workflow.

  - Restrict comment-triggered runs to OWNER/MEMBER/COLLABORATOR
  - Gate on github.repository to prevent execution on forks
  - Filter out draft PRs and bot actors
  - Only trigger on PR comments, not plain issue comments
  - Serialize reviews per PR via concurrency group

Signed-off-by: Guillaume Lours <[email protected]>
2026-03-23 17:38:46 +01:00
Ishwar b18354b9f4 refactor: thread context through publish sensitive data check
Signed-off-by: Ishwar <[email protected]>
2026-03-23 12:10:25 +01:00
dependabot[bot] 72bf113b0c build(deps): bump google.golang.org/grpc from 1.78.0 to 1.79.3
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.78.0 to 1.79.3.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.78.0...v1.79.3)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-version: 1.79.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
2026-03-23 11:47:25 +01:00
Nicolas De Loof 5de4353a6a bump golangci-lint to latest and configure CLAUDE to use it on change
Signed-off-by: Nicolas De Loof <[email protected]>
2026-03-23 11:33:52 +01:00
dependabot[bot] 27d9d50630 build(deps): bump github.com/containerd/platforms
Bumps [github.com/containerd/platforms](https://github.com/containerd/platforms) from 1.0.0-rc.2 to 1.0.0-rc.3.
- [Release notes](https://github.com/containerd/platforms/releases)
- [Commits](https://github.com/containerd/platforms/compare/v1.0.0-rc.2...v1.0.0-rc.3)

---
updated-dependencies:
- dependency-name: github.com/containerd/platforms
  dependency-version: 1.0.0-rc.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
2026-03-23 10:15:37 +01:00
Samarth Verma 0d8dc09048 cmd/display: left-pad timers for right-aligned column
Signed-off-by: Samarth Verma <[email protected]>
2026-03-20 15:14:05 +01:00
Samarth Verma 02aaf253c8 Fix TTY timer alignment leaving stale suffix
Signed-off-by: Samarth Verma <[email protected]>
2026-03-20 15:14:05 +01:00
maks2134 b043368028 Update docker/github-builder to v1.4.0
Fixes template validation error in CI by updating to latest stable version
of docker/github-builder workflow. This resolves the JToken parsing error
in bake.yml@v1 that was causing bin-image-test to fail.

Signed-off-by: maks2134 <[email protected]>
v5.1.1
2026-03-18 16:23:34 +01:00
maks2134 c7e8896360 Fix forbidigo linting error
- Replace context.Background() with t.Context() in TestDoneDeadlockFix
- Ensures .idea files are not included in commit

Signed-off-by: maks2134 <[email protected]>
2026-03-18 16:23:34 +01:00
maks2134 e3fcdb8238 Fix linting issues in tty_test.go
- Replace context.Background() with context.WithCancel() in test
- Fix formatting issues (remove extra empty line)

Signed-off-by: maks2134 <[email protected]>
2026-03-18 16:23:34 +01:00
maks2134 b7d1c62ec7 exclude .idea from git commit
Signed-off-by: maks2134 <[email protected]>
2026-03-18 16:23:34 +01:00
maks2134 25b29d776b Fix deadlock in ttyWriter.Done()
Resolves race condition between main thread calling Done() and UI thread
calling printWithDimensions(). The issue was that Done() held the mutex
while sending to the done channel, but the UI thread needed the same
mutex to process the done signal.

Fixed by sending the done signal before acquiring the mutex, allowing
the UI thread to receive the signal and release any held locks.

Fixes #13639

Signed-off-by: maks2134 <[email protected]>
2026-03-18 16:23:34 +01:00
dependabot[bot] e8c2143498 build(deps): bump github.com/moby/moby/client from 0.2.2 to 0.3.0
Bumps [github.com/moby/moby/client](https://github.com/moby/moby) from 0.2.2 to 0.3.0.
- [Release notes](https://github.com/moby/moby/releases)
- [Changelog](https://github.com/moby/moby/blob/v0.3.0/CHANGELOG.md)
- [Commits](https://github.com/moby/moby/compare/v0.2.2...v0.3.0)

---
updated-dependencies:
- dependency-name: github.com/moby/moby/client
  dependency-version: 0.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
2026-03-12 14:06:28 +01:00
dependabot[bot] 0ffb171173 build(deps): bump golang.org/x/sync from 0.19.0 to 0.20.0
Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.19.0 to 0.20.0.
- [Commits](https://github.com/golang/sync/compare/v0.19.0...v0.20.0)

---
updated-dependencies:
- dependency-name: golang.org/x/sync
  dependency-version: 0.20.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
2026-03-12 14:06:03 +01:00
dependabot[bot] eb6afa8d3d build(deps): bump github.com/containerd/containerd/v2
Bumps [github.com/containerd/containerd/v2](https://github.com/containerd/containerd) from 2.2.1 to 2.2.2.
- [Release notes](https://github.com/containerd/containerd/releases)
- [Changelog](https://github.com/containerd/containerd/blob/main/RELEASES.md)
- [Commits](https://github.com/containerd/containerd/compare/v2.2.1...v2.2.2)

---
updated-dependencies:
- dependency-name: github.com/containerd/containerd/v2
  dependency-version: 2.2.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
2026-03-11 10:14:46 +01:00
dependabot[bot] 79d4fe3c14 build(deps): bump golang.org/x/sys from 0.41.0 to 0.42.0
Bumps [golang.org/x/sys](https://github.com/golang/sys) from 0.41.0 to 0.42.0.
- [Commits](https://github.com/golang/sys/compare/v0.41.0...v0.42.0)

---
updated-dependencies:
- dependency-name: golang.org/x/sys
  dependency-version: 0.42.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
2026-03-09 10:15:41 +01:00
Sebastiaan van Stijn d7ec1eca9a update to go1.25.8
go1.25.8 (released 2026-03-05) includes security fixes to the html/template,
net/url, and os packages, as well as bug fixes to the go command, the compiler,
and the os package. See the Go 1.25.8 milestone on our issue tracker for details.

- 1.25.8 https://github.com/golang/go/issues?q=milestone%3AGo1.25.8+label%3ACherryPickApproved
- diff: https://github.com/golang/go/compare/go1.25.7...go1.25.8
- 1.26.1 https://github.com/golang/go/issues?q=milestone%3AGo1.26.1+label%3ACherryPickApproved
- diff: https://github.com/golang/go/compare/go1.26.0...go1.26.1

---

We have just released Go versions 1.26.1 and 1.25.8, minor point releases.

These releases include 5 security fixes following the security policy:

crypto/x509: incorrect enforcement of email constraints

- When verifying a certificate chain which contains a certificate containing
  multiple email address constraints (composed of the full email address) which
  share common local portions (the portion of the address before the '@'
  character) but different domain portions (the portion of the address after the
  '@' character), these constraints will not be properly applied, and only the
  last constraint will be considered.

  This can allow certificates in the chain containing email addresses which are
  either not permitted or excluded by the relevant constraints to be returned by
  calls to Certificate.Verify. Since the name constraint checks happen after chain
  building is complete, this only applies to certificate chains which chain to
  trusted roots (root certificates either in VerifyOptions.Roots or in the system
  root certificate pool), requiring a trusted CA to issue certificates containing
  either not permitted or excluded email addresses.

  This issue only affects Go 1.26.

  Thanks to Jakub Ciolek for reporting this issue.

  This is CVE-2026-27137 and Go issue https://go.dev/issue/77952.

- crypto/x509: panic in name constraint checking for malformed certificates

  Certificate verification can panic when a certificate in the chain has an empty
  DNS name and another certificate in the chain has excluded name constraints.
  This can crash programs that are either directly verifying X.509 certificate
  chains, or those that use TLS.

  Since the name constraint checks happen after chain building is complete, this
  only applies to certificate chains which chain to trusted roots (root
  certificates either in VerifyOptions.Roots or in the system root certificate
  pool), requiring a trusted CA to issue certificates containing malformed DNS
  names.

  This issue only affects Go 1.26.

  Thanks to Jakub Ciolek for reporting this issue.

  This is CVE-2026-27138 and Go issue https://go.dev/issue/77953.

- html/template: URLs in meta content attribute actions are not escaped

  Actions which insert URLs into the content attribute of HTML meta tags are not
  escaped. This can allow XSS if the meta tag also has an http-equiv attribute
  with the value "refresh".

  A new GODEBUG setting has been added, htmlmetacontenturlescape, which can be
  used to disable escaping URLs in actions in the meta content attribute which
  follow "url=" by setting htmlmetacontenturlescape=0.

  This is CVE-2026-27142 and Go issue https://go.dev/issue/77954.

- net/url: reject IPv6 literal not at start of host

  The Go standard library function net/url.Parse insufficiently
  validated the host/authority component and accepted some invalid URLs
  by effectively treating garbage before an IP-literal as ignorable.
  The function should have rejected this as invalid.

  To prevent this behavior, net/url.Parse now rejects IPv6 literals
  that do not appear at the start of the host subcomponent of a URL.

  Thanks to Masaki Hara (https://github.com/qnighy) of Wantedly.

  This is CVE-2026-25679 and Go issue https://go.dev/issue/77578.

- os: FileInfo can escape from a Root

  On Unix platforms, when listing the contents of a directory using
  File.ReadDir or File.Readdir the returned FileInfo could reference
  a file outside of the Root in which the File was opened.

  The contents of the FileInfo were populated using the lstat system
  call, which takes the path to the file as a parameter. If a component
  of the full path of the file described by the FileInfo is replaced with
  a symbolic link, the target of the lstat can be directed to another
  location on the filesystem.

  The impact of this escape is limited to reading metadata provided by
  lstat from arbitrary locations on the filesystem. This could be used
  to probe for the presence or absence of files as well as gleaning
  metadata like file sizes, but does not permit reading or writing files
  outside the root.

  The FileInfo is now populated using fstatat.

  Thank you to Miloslav Trmač of Red Hat for reporting this issue.

  This is CVE-2026-27139 and Go issue https://go.dev/issue/77827.

Signed-off-by: Sebastiaan van Stijn <[email protected]>
2026-03-06 14:08:45 +01:00