RUSTSEC-2026-0129 Buffer overflow in `Clusterings::from_i32_column_major_order()`
A buffer overflow in the Rust clustering library allows attackers to cause memory corruption or crashes via safe API calls with mismatched input lengths.
- Exploited in the wild
- Not known
- Login needed
- Not needed
- Attackable
- Not stated
- Victim action needed
- Not needed
- Fix
- Available
What is RUSTSEC-2026-0129?
RUSTSEC-2026-0129 is a memory corruption vulnerability in dahl-salso, published on 2 May 2026.
Official description
The from_i32_column_major_order method can create inconsistent internal
state. When labels length and n_items mismatch, n_clusterings becomes
labels.len() / n_items (truncated), but subsequent calls to label() use
indices that exceed the internal data bounds, causing a buffer overflow.
For example, Clusterings::from_i32_column_major_order(&[1,2,3,4,5], 3)
creates clusterings with n_clusterings = 5/3 = 1. Then
clusterings.label(1, 0) accesses index 1*3 = 3, but only 3 elements
exist (indices 0,1,2), causing out-of-bounds access.
This can be triggered through safe public APIs —
from_i32_column_major_order() and label() — with no unsafe required
from the caller.
Which versions are affected by RUSTSEC-2026-0129?
1 open source package ship an affected version, including dahl-salso.
| Package | Affected | Fixed in |
|---|---|---|
dahl-salso crates.io | From 0.0.0-0 | 0.6.8 |
How do I fix RUSTSEC-2026-0129?
Upgrade dahl-salso to 0.6.8 or later.
Upgrade to the fixed version. Memory-safe languages, compiler hardening and fuzzing prevent most new cases. More about Memory corruption.
Is RUSTSEC-2026-0129 being exploited?
There is no known exploitation of RUSTSEC-2026-0129 in the wild and no public exploit code.