Static rustc_lint::methods::TEMPORARY_CSTRING_AS_PTR
source · pub static TEMPORARY_CSTRING_AS_PTR: &Lint
Expand description
The temporary_cstring_as_ptr
lint detects getting the inner pointer of
a temporary CString
.
Example
let c_str = CString::new("foo").unwrap().as_ptr();
{{produces}}
Explanation
The inner pointer of a CString
lives only as long as the CString
it
points to. Getting the inner pointer of a temporary CString
allows the CString
to be dropped at the end of the statement, as it is not being referenced as far as the typesystem
is concerned. This means outside of the statement the pointer will point to freed memory, which
causes undefined behavior if the pointer is later dereferenced.