Skip to content

chore(release): bump memf-* to publish the yara-x and lru security fixes - #18

Merged
h4x0r merged 1 commit into
mainfrom
chore/release-memf-security-bumps
Aug 16, 2026
Merged

chore(release): bump memf-* to publish the yara-x and lru security fixes#18
h4x0r merged 1 commit into
mainfrom
chore/release-memf-security-bumps

Conversation

@h4x0r

@h4x0r h4x0r commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

chore(release): bump memf-core/format/strings/windows to publish the security fixes

PR #17 fixed this repo's tree but published nothing, and the reason is
structural rather than a mistake in the commit subject: the squash touched 8
files, none of them under crates/, and release-plz runs with
dependencies_update = false. So no library package changed by its own
reckoning, and it correctly declined — logging no commit matches the release_commits regex for every member.

The consequence is that downstream is still exposed. The PUBLISHED crates
declare the old requirements:

memf-windows 0.4.4   yara-x ^0.12   -> wasmtime 26.0.1, 18 advisories
memf-strings 0.2.2   yara-x ^0.12   -> same
memf-core    0.2.5   lru    ^0.16   -> below the patched 0.18.2
memf-format  0.3.1   lru    ^0.16   -> same

4n6mount and issen consume those published crates, so nothing reaches them
until these four are republished. This bump is what makes release-plz's
release job publish them: it ships any library whose version is ahead of
crates.io, regardless of commit type.

Bump levels are chosen from whether the dependency is reachable through each
crate's PUBLIC API, checked by reading every occurrence rather than by a
pattern match:

  • memf-windows 0.4.4 -> 0.5.0 (MINOR — breaking under 0.x).
    pub fn scan_yara(reader, ps_head_vaddr, rules: &yara_x::Rules, ...) takes
    a yara-x type across the API boundary. A caller holding a Rules built by
    yara-x 0.12 cannot pass it to a signature expecting 1.7, so this is a
    breaking change and a patch bump would have shipped it silently.
  • memf-core 0.2.5 -> 0.2.6, memf-format 0.3.1 -> 0.3.2,
    memf-strings 0.2.2 -> 0.2.3 (PATCH). In each, the dependency is held behind
    a private field — tlb_cache, cache, rules — and no public signature
    mentions it. The compiled dependency set changes; the API does not.

The workspace's path-dep declarations move with them: they pin exact versions
(memf-windows = { version = "0.4.4", path = ... }), and ^0.4.4 cannot match
0.5.0, so leaving them would break the build rather than merely lag.

chore(release): is deliberate. release_commits excludes chore, so this does
not trigger a second version bump on top of this one, while the release job
still publishes on the version-ahead-of-crates.io rule.

Verified: cargo update -w moves all four in the lock, and
cargo check --workspace --all-features --all-targets is clean.

KNOWN GAP, deliberately not fixed here: published memf-carve 0.1.5 requires
memf-windows ^0.4 and so cannot resolve 0.5.0. Nothing downstream of this
repo currently consumes memf-carve, so it is left for its own release rather
than widened blind in a security bump.

…security fixes

PR #17 fixed this repo's tree but published nothing, and the reason is
structural rather than a mistake in the commit subject: the squash touched 8
files, none of them under `crates/`, and release-plz runs with
`dependencies_update = false`. So no library package changed by its own
reckoning, and it correctly declined — logging `no commit matches the
release_commits regex` for every member.

The consequence is that downstream is still exposed. The PUBLISHED crates
declare the old requirements:

    memf-windows 0.4.4   yara-x ^0.12   -> wasmtime 26.0.1, 18 advisories
    memf-strings 0.2.2   yara-x ^0.12   -> same
    memf-core    0.2.5   lru    ^0.16   -> below the patched 0.18.2
    memf-format  0.3.1   lru    ^0.16   -> same

`4n6mount` and `issen` consume those published crates, so nothing reaches them
until these four are republished. This bump is what makes release-plz's
`release` job publish them: it ships any library whose version is ahead of
crates.io, regardless of commit type.

Bump levels are chosen from whether the dependency is reachable through each
crate's PUBLIC API, checked by reading every occurrence rather than by a
pattern match:

  - memf-windows 0.4.4 -> 0.5.0 (MINOR — breaking under 0.x).
    `pub fn scan_yara(reader, ps_head_vaddr, rules: &yara_x::Rules, ...)` takes
    a yara-x type across the API boundary. A caller holding a `Rules` built by
    yara-x 0.12 cannot pass it to a signature expecting 1.7, so this is a
    breaking change and a patch bump would have shipped it silently.
  - memf-core 0.2.5 -> 0.2.6, memf-format 0.3.1 -> 0.3.2,
    memf-strings 0.2.2 -> 0.2.3 (PATCH). In each, the dependency is held behind
    a private field — `tlb_cache`, `cache`, `rules` — and no public signature
    mentions it. The compiled dependency set changes; the API does not.

The workspace's path-dep declarations move with them: they pin exact versions
(`memf-windows = { version = "0.4.4", path = ... }`), and `^0.4.4` cannot match
0.5.0, so leaving them would break the build rather than merely lag.

`chore(release):` is deliberate. `release_commits` excludes chore, so this does
not trigger a second version bump on top of this one, while the `release` job
still publishes on the version-ahead-of-crates.io rule.

Verified: `cargo update -w` moves all four in the lock, and
`cargo check --workspace --all-features --all-targets` is clean.

KNOWN GAP, deliberately not fixed here: published `memf-carve 0.1.5` requires
`memf-windows ^0.4` and so cannot resolve 0.5.0. Nothing downstream of this
repo currently consumes memf-carve, so it is left for its own release rather
than widened blind in a security bump.
@h4x0r
h4x0r merged commit bc0e0ed into main Aug 16, 2026
26 checks passed
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