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...