---
id: CVE-2021-25900
aliases:
  - RUSTSEC-2021-0003
  - GHSA-43w2-9j62-hq99
title: 'Buffer overflow in SmallVec::insert_many'
summary: 'Buffer overflow in SmallVec::insert_many'
severity: critical
cvss: 9.8
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H'
vendor: smallvec
product: smallvec
ecosystem: rust
affected:
  - 'smallvec >= 1.0.0, < 1.6.1'
patched:
  - smallvec 1.6.1
published: '2021-01-08'
updated: '2026-07-17'
source: OSV
sourceUrl: 'https://osv.dev/vulnerability/RUSTSEC-2021-0003'
references:
  - url: 'https://crates.io/crates/smallvec'
  - url: 'https://rustsec.org/advisories/RUSTSEC-2021-0003.html'
  - url: 'https://github.com/servo/rust-smallvec/issues/252'
tags:
  - osv
  - rust
epss: 0.01666
epssPercentile: 0.7575
ingestedAt: '2026-07-17T19:00:51.779Z'
---

## Overview

A bug in the `SmallVec::insert_many` method caused it to allocate a buffer that was smaller than needed.  It then wrote past the end of the buffer, causing a buffer overflow and memory corruption on the heap.

This bug was only triggered if the iterator passed to `insert_many` yielded more items than the lower bound returned from its `size_hint` method.
 
The flaw was corrected in smallvec 0.6.14 and 1.6.1, by ensuring that additional space is always reserved for each item inserted.  The fix also simplified the implementation of `insert_many` to use less unsafe code, so it is easier to verify its correctness.

Thank you to Yechan Bae ([@Qwaz](https://github.com/Qwaz)) and the Rust group at Georgia Tech’s SSLab for finding and reporting this bug.

## Affected packages

- `smallvec >= 1.0.0, < 1.6.1`

## Remediation

Upgrade to a patched release:

- `smallvec 1.6.1`
