Auto merge of #68572 - tmiasko:sanitizer-use-after-scope, r=nikic
Detect use-after-scope bugs with AddressSanitizer Enable use-after-scope checks by default when using AddressSanitizer. They allow to detect incorrect use of stack objects after their scope have already ended. The detection is based on LLVM lifetime intrinsics. To facilitate the use of this functionality, the lifetime intrinsics are now emitted regardless of optimization level if enabled sanitizer makes use of them.
This commit is contained in:
commit
edb3684915
10 changed files with 105 additions and 5 deletions
18
src/test/ui/sanitize/use-after-scope.rs
Normal file
18
src/test/ui/sanitize/use-after-scope.rs
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
// needs-sanitizer-support
|
||||
// only-x86_64
|
||||
//
|
||||
// compile-flags: -Zsanitizer=address
|
||||
// run-fail
|
||||
// error-pattern: ERROR: AddressSanitizer: stack-use-after-scope
|
||||
|
||||
static mut P: *mut usize = std::ptr::null_mut();
|
||||
|
||||
fn main() {
|
||||
unsafe {
|
||||
{
|
||||
let mut x = 0;
|
||||
P = &mut x;
|
||||
}
|
||||
std::ptr::write_volatile(P, 123);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue