fix(workspace): expose embedded-ssh facade feature on root crate#3569
Merged
Conversation
The benchmark workflow (.github/workflows/benchmark.yml:60) builds
`cargo build --release --features embedded-ssh` against the workspace
root `bin` crate, but the root Cargo.toml exposed no `embedded-ssh`
facade, so cargo failed with:
error: the package 'bin' does not contain this feature: embedded-ssh
help: packages with the missing feature: core, rsync_io
Add the facade following the existing pattern (mirrors `iconv` /
`openssl` forwarding). `core/embedded-ssh` already chains into
`rsync_io/embedded-ssh` and pulls in tokio/russh, so a one-line
forward is sufficient.
…rsa) The new `embedded-ssh` facade on the workspace root (PR #3569 first commit) makes `cargo-deny --all-features` walk the russh subgraph, which surfaces RUSTSEC-2023-0071 (timing side-channel in rsa 0.9.x). Scope: - Reaches oc-rsync only through the opt-in `embedded-ssh` feature (`russh-keys 0.45.0` -> `rsa 0.9.10`); default builds are unaffected. - No safe upstream upgrade is currently available. RustCrypto/RSA tracks the constant-time rewrite at RustCrypto/RSA#626. - Re-evaluate this allowlist entry once the russh 0.60.x bump (memory task #1851) lands and pulls in a fixed `rsa` crate.
oferchen
added a commit
that referenced
this pull request
May 5, 2026
* fix(workspace): expose embedded-ssh facade feature on root crate
The benchmark workflow (.github/workflows/benchmark.yml:60) builds
`cargo build --release --features embedded-ssh` against the workspace
root `bin` crate, but the root Cargo.toml exposed no `embedded-ssh`
facade, so cargo failed with:
error: the package 'bin' does not contain this feature: embedded-ssh
help: packages with the missing feature: core, rsync_io
Add the facade following the existing pattern (mirrors `iconv` /
`openssl` forwarding). `core/embedded-ssh` already chains into
`rsync_io/embedded-ssh` and pulls in tokio/russh, so a one-line
forward is sufficient.
* fix(deps): allowlist RUSTSEC-2023-0071 (Marvin Attack via russh-keys/rsa)
The new `embedded-ssh` facade on the workspace root (PR #3569 first
commit) makes `cargo-deny --all-features` walk the russh subgraph,
which surfaces RUSTSEC-2023-0071 (timing side-channel in rsa 0.9.x).
Scope:
- Reaches oc-rsync only through the opt-in `embedded-ssh` feature
(`russh-keys 0.45.0` -> `rsa 0.9.10`); default builds are unaffected.
- No safe upstream upgrade is currently available. RustCrypto/RSA
tracks the constant-time rewrite at
RustCrypto/RSA#626.
- Re-evaluate this allowlist entry once the russh 0.60.x bump (memory
task #1851) lands and pulls in a fixed `rsa` crate.
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.
Summary
Build oc-rsync with embedded-ssh (release)(.github/workflows/benchmark.yml:60).bincrate had noembedded-sshfacade feature, socargo build --release --features embedded-ssherrored withthe package 'bin' does not contain this feature: embedded-ssh(cargo's own hint namedcore, rsync_ioas the packages defining it).embedded-ssh = ["core/embedded-ssh"]facade.core/embedded-sshalready chains intorsync_io/embedded-ssh(which pulls in russh + tokio), so one-line forwarding is sufficient. Mirrors the existingiconv/opensslfacade pattern.Test plan
cargo metadata --features embedded-sshresolves on the root crate (will be exercised by CI).Benchmarkworkflow; the SSH transport row (subprocess vs russh) should now populate.