What's Today

Hacker News Front Page · jsnell ·

struct's lifetime requirements can be bypassed via covariant field assignment · Issue #164250 · rust-lang/rust

El informe demuestra que Rust acepta una asignación a un campo covariante que permite eludir el requisito `'static` de un tipo con una implementación de `Drop`. El programa conserva una referencia a una variable local como si fuera estática y luego la usa tras quedar fuera de alcance, lo que produce un uso después del fin de vida y puede provocar un fallo con AddressSanitizer.

In the following code: use std::sync::Mutex; static KEPT: Mutex<Vec<Box<dyn std::any::Any + Send>>> = Mutex::new(Vec::new()); struct Q<T: 'static + Send>(Option<T>); impl<T: 'static + Send> Drop fo...

Leer la nota completa en github.com →