Static rustc_lint::methods::TEMPORARY_CSTRING_AS_PTR
source · pub static TEMPORARY_CSTRING_AS_PTR: &LintExpand 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.