Skip to content

Release 0.4.2#2

Merged
emersonian merged 5 commits into
release/0.4.xfrom
feature/v0.4.2
Jul 7, 2026
Merged

Release 0.4.2#2
emersonian merged 5 commits into
release/0.4.xfrom
feature/v0.4.2

Conversation

@emersonian

Copy link
Copy Markdown
Contributor

Fixed

  • z_sendmany with privacyPolicy=AllowFullyTransparent no longer rejects a bare transparent recipient; the top privacy rung had been dropped, so the send was wrongly refused as needing AllowRevealedRecipients.

Security

  • getrawtransaction, sendrawtransaction, and the transparent address-index lookups no longer leak the upstream zebra host, port, or cookie-file path to the RPC client; the detail is logged server-side and a generic message is returned.
  • The age identity must resolve to a regular file with owner-only permissions; a symlink is followed (so a Kubernetes Secret mount still works) and the resolved target's file type and mode are enforced, with a dangling symlink failing closed.
  • Bump crossbeam-epoch to 0.9.20 for RUSTSEC-2026-0204.

emersonian and others added 5 commits July 7, 2026 02:06
The permission check already rejects a group- or other-accessible identity.
This adds the file-type half: the load target must resolve to a regular file,
not a directory, device, fifo, or socket. Symlinks are followed rather than
rejected, so a Kubernetes Secret volume (which mounts each file as a symlink)
still works; the resolved target's type and mode are enforced, and a dangling
symlink fails closed. Covered by a unit test.

Co-authored-by: AI <noreply+norm@overpay.com>
The getrawtransaction, sendrawtransaction, and transparent address-index paths
built their connection and transport errors directly, bypassing the generic
error funnel, so the zebra host, port, and cookie-file path leaked to the RPC
client. Route those sites through a helper that logs the full detail
server-side and returns a fixed generic message; disconnect logging still
records the reason. Covered by an offline actor test.

Co-authored-by: AI <noreply+norm@overpay.com>
Transitive dependency via rayon. A new advisory (an invalid pointer
dereference in the fmt::Pointer impl for Atomic and Shared) fails the
advisories gate on the current lockfile; zecd has no first-party use of the
affected impl. Lockfile-only patch bump from 0.9.18 to 0.9.20.

Co-authored-by: AI <noreply+norm@overpay.com>
The four-rung privacy ladder dropped its top rung in the transparent-recipient
pre-check, so build_payment rejected a bare transparent recipient under
AllowFullyTransparent with a -8 error, the exact send that policy exists to
permit. AllowFullyTransparent is strictly more permissive than
AllowRevealedRecipients, so it must permit any transparent recipient the latter
does. Guarded by a unit test asserting the full four-rung ladder.

Co-authored-by: AI <noreply+norm@overpay.com>
@emersonian
emersonian merged commit 5ad4b36 into release/0.4.x Jul 7, 2026
6 checks passed
@emersonian
emersonian deleted the feature/v0.4.2 branch July 7, 2026 16:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant