[release/2.1] Prepare release notes for v2.1.9#13629
Merged
Merged
Conversation
Port of 7b05ec4 to the release/2.1 call shape, which reads user databases via path-based user.ParsePasswdFile* / ParseGroupFile* helpers rather than the fs.FS-based openUserFile wrapper introduced later on main. UserFromPath, GIDFromPath, getSupplementalGroupsFromPath, and the setAdditionalGids closure in WithAppendAdditionalGroups now open /etc/passwd or /etc/group via openBoundedUserFile, which stats the resolved path, refuses anything that is not a regular file, and returns an io.ReadCloser that caps reads at maxUserFileBytes (10 MiB). The reader is consumed by the user.ParsePasswdFilter / ParseGroupFilter / ParseGroup variants. All four call sites read either etc/passwd or etc/group; both are regular files on real systems, well under the cap. The cap and the regular-file check together bound parser memory use when reading user-database files of unexpected shape or size. Adds tests for the cap and for the non-regular file rejection. The cap test covers three boundary points: a small pad (trailing entry parsed), a pad placing the entry's last byte exactly on the cap (still parsed), and a pad past the cap (read returns an "exceeds" error). The non-regular test verifies a FIFO at etc/group is rejected before any read is attempted. Updates TestWithAppendAdditionalGroupsNoEtcGroup to expect "stat ... no such file or directory" instead of "open ...". The soft-on-missing behavior of WithAppendAdditionalGroups is unchanged. (cherry picked from commit 7b05ec4) Signed-off-by: Chris Henzie <[email protected]> Signed-off-by: Brian Goff <[email protected]>
Google-Bug-Id: 508657842 Signed-off-by: Samuel Karp <[email protected]> (cherry picked from commit 0c0918f) Signed-off-by: Samuel Karp <[email protected]>
Image config labels are copied onto the container by both the CRI plugin (BuildLabels) and the client's WithImageConfigLabels option used by `ctr run`. Labels in the containerd.io/* namespace are interpreted by containerd itself and labels in the io.cri-containerd* namespace are interpreted by the CRI plugin. An image config is not a trusted source for labels in either namespace. Skip labels in both reserved namespaces when copying labels from an image config to a container, and warn about each label skipped: an image that tries to set them may be attempting to alter containerd behavior. Oversized image labels are already skipped this way by the CRI plugin. Labels set explicitly by clients, for example via `ctr run --label` or in the CRI request, are unaffected. Verified with the CRI plugin and with `ctr run` against an image whose config carries labels like these: the labels are no longer present on the created container and a warning is logged for each. Assisted-by: Claude Code Signed-off-by: Ben Cressey <[email protected]> Signed-off-by: Samuel Karp <[email protected]> (cherry picked from commit 0ec1af4) Signed-off-by: Akihiro Suda <[email protected]> Signed-off-by: Samuel Karp <[email protected]>
Filter out any annotations on the checkpointed container matching `cdi.k8s.io/` or exactly `cdi.k8s.io` during restore to prevent unauthorized device restoration. When an annotation is denied, a warning log is generated. Tested by: * Unit tests for exact matching, prefix boundaries, and metadata merging * Complete CRI integration and checkpoint restore suite Assisted-by: Antigravity Signed-off-by: Samuel Karp <[email protected]> (cherry picked from commit 861ffc1) Signed-off-by: Chris Henzie <[email protected]>
The CRI checkpoint restore path unpacked checkpoint archive/OCI image content directly into the container's persistent state directory and read files such as container.log back from it with a symlink-following copy. Checkpoint content is externally provided, so make restore more defensive about what it unpacks and how it reads those files back. Behavior changes: - Only unpack regular files and directories from the checkpoint archive. - Unpack checkpoint content into a dedicated <state>/ctrd-restore subdirectory created fresh rather than into the state dir itself, so checkpoint content cannot collide with containerd's own files (e.g. the "status" blob). Restore and cleanup operate on that subdir; cleanup is now a single RemoveAll of it. Signed-off-by: Brian Goff <[email protected]> (cherry picked from commit 8196411) Signed-off-by: Brian Goff <[email protected]> (cherry picked from commit 3576522) Signed-off-by: Brian Goff <[email protected]>
Signed-off-by: Samuel Karp <[email protected]>
|
Adding label DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
estesp
approved these changes
Jun 18, 2026
cpuguy83
approved these changes
Jun 18, 2026
chrishenzie
approved these changes
Jun 18, 2026
dims
approved these changes
Jun 18, 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.
containerd 2.1.9
Welcome to the v2.1.9 release of containerd!
The ninth patch release for containerd 2.1 contains various fixes
and updates including security patches.
Security Updates
Please try out the release binaries and report any issues at
https://github.com/containerd/containerd/issues.
Contributors
Changes
22 commits
b8b3a86e9Prepare release notes for v2.1.9ee965da63Merge commit from forkb5e0c4733Merge commit from fork02045fd46cri: filter CDI annotations on checkpoint restoree9c26cf3cMerge commit from fork2e4583a9fcri: do not re-tag restored checkpoints6e4ec908aMerge commit from fork570e69884cri: make checkpoint restore robust to unexpected archive content3788b4b9eMerge commit from fork290420fa7Bound user-database file reads in openBoundedUserFilebc5014f45Merge commit from fork429bcb924Do not propagate reserved labels from image configs698f2fd66update runc binary to v1.3.6b8b75a90eupdate go to 1.26.4/1.25.1122515b56fConfigure udevd children-max for root-testaf88d4f60Clean up disk space in node e2e workflow06df49576release - Empty allowedSignersFileDependency Changes
This release has no dependency changes
Previous release can be found at v2.1.8
Which file should I download?
containerd-<VERSION>-<OS>-<ARCH>.tar.gz: ✅Recommended. Dynamically linked with glibc 2.35 (Ubuntu 22.04).containerd-static-<VERSION>-<OS>-<ARCH>.tar.gz: Statically linked. Expected to be used on Linux distributions that do not use glibc >= 2.35. Not position-independent.In addition to containerd, typically you will have to install runc
and CNI plugins from their official sites too.
See also the Getting Started documentation.