Skip to content

Fix RPM spec to use libexec paths for compatibility binaries#1851

Merged
oferchen merged 1 commit into
masterfrom
fix-rpm-build-missing-files-error
Nov 1, 2025
Merged

Fix RPM spec to use libexec paths for compatibility binaries#1851
oferchen merged 1 commit into
masterfrom
fix-rpm-build-missing-files-error

Conversation

@oferchen
Copy link
Copy Markdown
Owner

@oferchen oferchen commented Nov 1, 2025

Summary

  • align the oc-rsync RPM spec entries for the legacy rsync binaries with their libexec install location

Testing

  • cargo rpm build -v

https://chatgpt.com/codex/tasks/task_e_6905728675608323ad65b9ca87c0254f

@oferchen oferchen merged commit 86e78f8 into master Nov 1, 2025
@oferchen oferchen deleted the fix-rpm-build-missing-files-error branch November 1, 2025 02:52
oferchen added a commit that referenced this pull request 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 added a commit that referenced this pull request May 3, 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.
oferchen added a commit that referenced this pull request May 4, 2026
…wlist (#1851) (#3610)

* chore(deps): bump russh 0.45 -> 0.60.1, drop GHSA-f5v4-2wr6-hqmg allowlist (#1851)

Retires the Marvin Attack timing side-channel (GHSA-f5v4-2wr6-hqmg /
RUSTSEC-2023-0071) by upgrading russh to 0.60.x, which transitively
pulls rsa 0.10 (constant-time rewrite). The advisory ignore entry in
deny.toml is removed; the embedded-ssh feature is now clean.

Notable upstream API changes pulled in:
- russh-keys merged into russh::keys (ssh-key types are re-exported there
  as PublicKey / PrivateKey via the russh fork of ssh-key).
- async fn in traits replaces #[async_trait]; the async-trait crate is no
  longer needed for client::Handler / server::Handler impls.
- Public-key auth requires PrivateKeyWithHashAlg to disambiguate RSA hash
  algorithms.
- Authenticate calls return AuthResult with .success() instead of bool.
- Handle::data takes Bytes/Into<Bytes>; the explicit CryptoVec wrapping is
  gone.
- Server::run_on_socket no longer returns Result.

Files touched:
- Cargo.toml: workspace pin russh = "0.60.1", drop async-trait,
  russh-keys, ssh-key.
- crates/rsync_io/Cargo.toml: drop async-trait/russh-keys/ssh-key from
  the embedded-ssh feature; add rand 0.10 dev-dep for test key gen.
- crates/rsync_io/src/ssh/embedded/handler.rs: use russh::keys::{HashAlg,
  PublicKey, known_hosts}; native async fn check_server_key; SHA-256
  fingerprints via key.fingerprint(HashAlg::Sha256); algorithm name via
  key.algorithm().
- crates/rsync_io/src/ssh/embedded/auth.rs: AgentClient flow uses
  identity.public_key().into_owned(); identity-file auth wraps keys in
  PrivateKeyWithHashAlg::new(Arc::new(key), None); password/pubkey checks
  inspect AuthResult::success(); mock server uses Auth::reject() and
  PrivateKey::random(&mut rand::rng(), Algorithm::Ed25519).
- crates/rsync_io/src/ssh/embedded/connect.rs: Handle::data accepts
  Vec<u8> directly via Into<Bytes>; CryptoVec wrap removed.
- deny.toml: drop RUSTSEC-2023-0071 from advisories.ignore.
- docs/audits/ssh-transport-timeout-coverage.md: update russh_keys path
  reference to russh::keys.

CI must pass on all required matrices (fmt+clippy, nextest stable,
Windows, macOS, Linux musl, cargo-deny).

Closes #1851

* style: cargo fmt --all

* fix(deny): re-add RUSTSEC-2023-0071 allowlist for rsa 0.10 RC

russh 0.60.x transitively pulls rsa 0.10.0-rc.16 (the constant-time rewrite
tracked at RustCrypto/RSA#626), but the rustsec advisory has not been updated
to mark 0.10 as patched -- there is no stable 0.10 release yet, only release
candidates -- so cargo-deny still flags RUSTSEC-2023-0071 and fails CI.

Restore the allowlist with an updated comment explaining the new state.
The russh bump is still a net win: smaller dep graph, removes async-trait
and standalone russh-keys/ssh-key, and positions us to retire the allowlist
the moment rsa 0.10 ships stable. Reaches us only via the opt-in
`embedded-ssh` feature; default builds are unaffected.
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.
oferchen added a commit that referenced this pull request May 5, 2026
…wlist (#1851) (#3610)

* chore(deps): bump russh 0.45 -> 0.60.1, drop GHSA-f5v4-2wr6-hqmg allowlist (#1851)

Retires the Marvin Attack timing side-channel (GHSA-f5v4-2wr6-hqmg /
RUSTSEC-2023-0071) by upgrading russh to 0.60.x, which transitively
pulls rsa 0.10 (constant-time rewrite). The advisory ignore entry in
deny.toml is removed; the embedded-ssh feature is now clean.

Notable upstream API changes pulled in:
- russh-keys merged into russh::keys (ssh-key types are re-exported there
  as PublicKey / PrivateKey via the russh fork of ssh-key).
- async fn in traits replaces #[async_trait]; the async-trait crate is no
  longer needed for client::Handler / server::Handler impls.
- Public-key auth requires PrivateKeyWithHashAlg to disambiguate RSA hash
  algorithms.
- Authenticate calls return AuthResult with .success() instead of bool.
- Handle::data takes Bytes/Into<Bytes>; the explicit CryptoVec wrapping is
  gone.
- Server::run_on_socket no longer returns Result.

Files touched:
- Cargo.toml: workspace pin russh = "0.60.1", drop async-trait,
  russh-keys, ssh-key.
- crates/rsync_io/Cargo.toml: drop async-trait/russh-keys/ssh-key from
  the embedded-ssh feature; add rand 0.10 dev-dep for test key gen.
- crates/rsync_io/src/ssh/embedded/handler.rs: use russh::keys::{HashAlg,
  PublicKey, known_hosts}; native async fn check_server_key; SHA-256
  fingerprints via key.fingerprint(HashAlg::Sha256); algorithm name via
  key.algorithm().
- crates/rsync_io/src/ssh/embedded/auth.rs: AgentClient flow uses
  identity.public_key().into_owned(); identity-file auth wraps keys in
  PrivateKeyWithHashAlg::new(Arc::new(key), None); password/pubkey checks
  inspect AuthResult::success(); mock server uses Auth::reject() and
  PrivateKey::random(&mut rand::rng(), Algorithm::Ed25519).
- crates/rsync_io/src/ssh/embedded/connect.rs: Handle::data accepts
  Vec<u8> directly via Into<Bytes>; CryptoVec wrap removed.
- deny.toml: drop RUSTSEC-2023-0071 from advisories.ignore.
- docs/audits/ssh-transport-timeout-coverage.md: update russh_keys path
  reference to russh::keys.

CI must pass on all required matrices (fmt+clippy, nextest stable,
Windows, macOS, Linux musl, cargo-deny).

Closes #1851

* style: cargo fmt --all

* fix(deny): re-add RUSTSEC-2023-0071 allowlist for rsa 0.10 RC

russh 0.60.x transitively pulls rsa 0.10.0-rc.16 (the constant-time rewrite
tracked at RustCrypto/RSA#626), but the rustsec advisory has not been updated
to mark 0.10 as patched -- there is no stable 0.10 release yet, only release
candidates -- so cargo-deny still flags RUSTSEC-2023-0071 and fails CI.

Restore the allowlist with an updated comment explaining the new state.
The russh bump is still a net win: smaller dep graph, removes async-trait
and standalone russh-keys/ssh-key, and positions us to retire the allowlist
the moment rsa 0.10 ships stable. Reaches us only via the opt-in
`embedded-ssh` feature; default builds are unaffected.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant