GitHub Advisoryadvisory · crates.io
GHSA-xqjr-wfx3-gmxv ArrayQueue's push_front is not panic-safe
MEDIUM
Official page ↗
- Ecosystem
- crates.io
- Packages
- array-queue
- Severity
- Moderate
- CVSS vector
- CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
- Weaknesses
- CWE-665
- Reviewed
- 2025-09-02
Affected packages
• crates.io array-queue: >= 0.3.0, < 0.4.0 → fixed in 0.4.0
Description
The safe API `array_queue::ArrayQueue::push_front` can lead to deallocating uninitialized memory if a panic occurs while invoking the `clone` method on the passed argument.
Specifically, `push_front` receives an argument that is intended to be cloned and pushed, whose type implements the `Clone` trait. Furthermore, the method updates the queue's `start` index before initializing the slot for the newly pushed element. User-defined implementations of `Clone` may include a `clone` method that can panic. If such a panic occurs during initialization, the structure is left with an advanced `start` index pointing to an uninitialized slot. When `ArrayQueue` is later dropped, its destructor treats that slot as initialized and attempts to drop it, resulting in an attempt to free uninitialized memory.
The bug was fixed in commit `728fe1b`.
Related
Weakness · CWE (1)
- CWE-665 Improper Initialization weakness