RUSTSEC-2026-0252

Source
https://rustsec.org/advisories/RUSTSEC-2026-0252
Import Source
https://github.com/rustsec/advisory-db/blob/osv/crates/RUSTSEC-2026-0252.json
JSON Data
https://api.osv.dev/v1/vulns/RUSTSEC-2026-0252
Published
2026-08-11T12:00:00Z
Modified
2026-08-11T10:45:03.244815765Z
Summary
Panic-safety unsoundness in `SplitVec::extend_from_slice` (uninitialized read)
Details

SplitVec::extend_from_slice increments the logical length self.len before cloning the incoming elements into the reserved slots. If an element's Clone panics mid-fill, unwinding leaves self.len counting slots that were never initialized. A later safe read (get, indexing, iter) then reads one of those uninitialized slots.

This is reachable from safe Rust — a read of uninitialized memory (CWE-908). It is not a double-free: SplitVec has no manual Drop and its elements live in a standard Vec, so the defect is a read, not a free.

Impact

A safe read after the panic returns a value built from uninitialized bytes. For a heap-owning element type such as String, the resulting value has garbage length/pointer fields.

Confirmed under Miri. AddressSanitizer stays silent for this class, since the uninitialized bytes are consumed as a non-dereferenced field rather than an invalid load or free.

Fix

Fixed in orx-split-vec 4.0.0, which no longer commits the length before the elements are cloned.

Database specific
{
    "license": "CC0-1.0"
}
References

Affected packages

crates.io / orx-split-vec

Package

Name
orx-split-vec
View open source insights on deps.dev
Purl
pkg:cargo/orx-split-vec

Affected ranges

Type
SEMVER
Events
Introduced
0.0.0-0
Fixed
4.0.0

Ecosystem specific

{
    "affects": {
        "os": [],
        "arch": [],
        "functions": []
    },
    "affected_functions": null
}

Database specific

informational
"unsound"
source
"https://github.com/rustsec/advisory-db/blob/osv/crates/RUSTSEC-2026-0252.json"
categories
[
    "memory-corruption"
]
cvss
null