about summary refs log tree commit diff
path: root/src/tools/miri/tests/fail/uninit/uninit_alloc_diagnostic.rs
blob: 5edf4bbb1ccdadf1a9ab9095f47e9d88547d34b2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//@compile-flags: -Zmiri-disable-validation
//@error-in-other-file: memory is uninitialized at [0x4..0x10]

#![allow(dropping_copy_types)]

use std::alloc::{Layout, alloc, dealloc};
use std::slice::from_raw_parts;

fn main() {
    let layout = Layout::from_size_align(32, 8).unwrap();
    unsafe {
        let ptr = alloc(layout);
        *ptr = 0x41;
        *ptr.add(1) = 0x42;
        *ptr.add(2) = 0x43;
        *ptr.add(3) = 0x44;
        *ptr.add(16) = 0x00;
        let slice1 = from_raw_parts(ptr, 16);
        let slice2 = from_raw_parts(ptr.add(16), 16);
        drop(slice1.cmp(slice2));
        dealloc(ptr, layout);
    }
}