Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/bindings-python.yml
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ jobs:

# TODO: Should we move this to a separate workflow?
release-pypi:
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
if: false && github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
needs:
- build-pyproject
- python-complete
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -657,7 +657,7 @@ jobs:
- run: echo "Rust CI jobs completed successfully."

release-crate:
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
if: false && github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
needs:
- rust-complete
runs-on: ubuntu-latest
Expand Down
39 changes: 33 additions & 6 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,27 @@ and this project adheres to [Semantic Versioning](http://semver.org/).

## [Unreleased] ##

## [0.2.5] - 2026-06-17 ##

> Or, to save on postage, I'll just poison him with this!

> [!IMPORTANT]
> Due to the rising tide of supply chain attacks, we have stopped using
> "Trusted" Publishing for our crates.io and PyPi releases. Their
> UIs imply that such releases are "more trusted" but as the recent attacks
> have shown, they actually grant your code forge's *entire infrastructure* the
> right to release things on your behalf.
>
> It would be nice if `crates.io` and PyPI supported a proper signing model
> where developers control their keys, but that is sadly not the case today.
> For PyPI, [detached PGP keys in PyPI are basically security
> theatre][pypi-sigs-2023] and [PEP 480][PEP-480] has stalled; for `crates.io`
> there appears to be *no* mechanism for signing your releases with a key you
> control directly!

[pypi-sigs-2023]: https://blog.yossarian.net/2023/05/21/PGP-signatures-on-PyPI-worse-than-useless
[PEP-480]: https://peps.python.org/pep-0480/

### Breaking ###
* `pathrs_inroot_hardlink` and `pathrs_inroot_symlink` have been switched to
using the standard argument order from their respective system calls
Expand Down Expand Up @@ -60,11 +81,16 @@ and this project adheres to [Semantic Versioning](http://semver.org/).

### Fixed ###
- Containers often have `/proc/sys` overmounted with a read-only mount to avoid
container escapes, this caused:
- The `O_PATH` resolver to panic because the hardened procfs lookup for
`/proc/sys/fs/protected_symlinks` would fail. We now conservatively assume
that `fs.protected_symlinks` is enabled if we cannot access the file for
any reason.
container escapes, this caused the `O_PATH` resolver to panic because the
hardened procfs lookup for `/proc/sys/fs/protected_symlinks` would fail. We
now conservatively assume that `fs.protected_symlinks` is enabled if we
cannot access the file for any reason.

This also causes attempts to access `/proc/sys` files using `ProcfsHandle` to
also fail (by design). In the future we plan to provide some quality-of-life
improvements to permit access in those cases, but at the moment users need to
be aware that those kinds of accesses can fail.

- `Root::readlink` and `ProcfsHandle::readlink` would previously return
`ENOENT` if the target path existed but was not a symlink. This occurred
because of a peculiar asymmetry in the kernel APIs for `readlinkat(2)`, but
Expand Down Expand Up @@ -751,7 +777,8 @@ Initial release.
- C FFI.
- Python bindings.

[Unreleased]: https://github.com/cyphar/libpathrs/compare/v0.2.4...HEAD
[Unreleased]: https://github.com/cyphar/libpathrs/compare/v0.2.5...HEAD
[0.2.5]: https://github.com/cyphar/libpathrs/compare/v0.2.4...v0.2.5
[0.2.4]: https://github.com/cyphar/libpathrs/compare/v0.2.3...v0.2.4
[0.2.3]: https://github.com/cyphar/libpathrs/compare/v0.2.2...v0.2.3
[0.2.2]: https://github.com/cyphar/libpathrs/compare/v0.2.1...v0.2.2
Expand Down
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@

[package]
name = "pathrs"
version = "0.2.4+dev"
version = "0.2.5+dev"
license = "MPL-2.0 OR LGPL-3.0-or-later"
authors = ["Aleksa Sarai <cyphar@cyphar.com>"]

Expand Down
2 changes: 1 addition & 1 deletion contrib/bindings/python/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "pathrs"
# TODO: Figure out a way to keep this version up-to-date with Cargo.toml.
version = "0.2.4+dev"
version = "0.2.5+dev"
description = "Python bindings for libpathrs, a safe path resolution library for Linux."
readme = "README.md"
keywords = ["libpathrs", "pathrs"]
Expand Down
Loading