Arithmetic overflow found on `with_capacity()`
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 42/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- rust
- Área
- backend-api-design
Línea de trabajo
Comienza en HeaderMap::with_capacity y sigue el recorrido hasta to_raw_capacity; después reproduce la llamada con gran capacidad indicada, incluida la distinción con issue #626. Se considera terminado cuando la entrada indicada ya no provoca un desbordamiento aritmético y se conserva el comportamiento existente para capacidades excesivamente grandes.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
I executed fuzz testing on http-0.2.9, and found some arithmetic overflow.
Please note that overflow condition is different with #626 .
pub fn with_capacity(capacity: usize) -> HeaderMap<T> {
if capacity == 0 {
HeaderMap {
mask: 0,
indices: Box::new([]), // as a ZST, this doesn't actually allocate anything
entries: Vec::new(),
extra_values: Vec::new(),
danger: Danger::Green,
}
} else {
let raw_cap = to_raw_capacity(capacity).next_power_of_two(); // overflow!
assert!(raw_cap <= MAX_SIZE, "requested capacity too large");
debug_assert!(raw_cap > 0);
HeaderMap {
mask: (raw_cap - 1) as Size,
indices: vec![Pos::none(); raw_cap].into_boxed_slice(),
entries: Vec::with_capacity(raw_cap),
extra_values: Vec::new(),
danger: Danger::Green,
}
}
}
reproduce with :
HeaderMap::<u32>::with_capacity(12538021362599493900); // put some big number here
If you input TOO big number on with_capacity(), #626 occurs before reaching to next_power_of_two().
- Lenguaje dominante
- Rust
- Estrellas
- 1.4k
- Forks
- 378
- Merge medio
- 1 d 21 h
- PR fusionados (30 d)
- 5
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de hyperium/http
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 62/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 58/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 62/100
Todos los issues de hyperium/http
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
nautechsystems/nautilus_trader#5095 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
stellar/rs-soroban-env#1739 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
-
bug good first issue package: quic
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100