Skip to content

fix(workspace): expose embedded-ssh facade feature on root crate#3569

Merged
oferchen merged 2 commits into
masterfrom
fix/workspace-embedded-ssh-facade
May 3, 2026
Merged

fix(workspace): expose embedded-ssh facade feature on root crate#3569
oferchen merged 2 commits into
masterfrom
fix/workspace-embedded-ssh-facade

Conversation

@oferchen
Copy link
Copy Markdown
Owner

@oferchen oferchen commented May 3, 2026

Summary

  • The v0.6.1 benchmark workflow failed at the build step Build oc-rsync with embedded-ssh (release) (.github/workflows/benchmark.yml:60).
  • Root cause: workspace root bin crate had no embedded-ssh facade feature, so cargo build --release --features embedded-ssh errored with the package 'bin' does not contain this feature: embedded-ssh (cargo's own hint named core, rsync_io as the packages defining it).
  • Fix: add embedded-ssh = ["core/embedded-ssh"] facade. core/embedded-ssh already chains into rsync_io/embedded-ssh (which pulls in russh + tokio), so one-line forwarding is sufficient. Mirrors the existing iconv / openssl facade pattern.

Test plan

  • cargo metadata --features embedded-ssh resolves on the root crate (will be exercised by CI).
  • After merge, re-tagging v0.6.1 will re-trigger Benchmark workflow; the SSH transport row (subprocess vs russh) should now populate.
  • No behavioural change for default builds — facade is opt-in only.

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.
@github-actions github-actions Bot added the bug Something isn't working label May 3, 2026
…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 oferchen merged commit 0f759b5 into master May 3, 2026
38 checks passed
@oferchen oferchen deleted the fix/workspace-embedded-ssh-facade branch May 3, 2026 07:53
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant