| //@compile-flags: -Zmiri-permissive-provenance | |
| // C says that passing "invalid" pointers is UB for all string functions. | |
| // It is unclear whether `(int*)42` is "invalid", but there is no actually | |
| // a `char` living at that address, so arguably it cannot be a valid pointer. | |
| // Hence this is UB. | |
| fn main() { | |
| let ptr = 42 as *const u8; | |
| unsafe { | |
| libc::memcmp(ptr.cast(), ptr.cast(), 0); //~ERROR: dangling | |
| } | |
| } |