]> git.lizzy.rs Git - rust.git/commitdiff
test validation of uninit memory (used to ICE)
authorRalf Jung <post@ralfj.de>
Sun, 5 Jul 2020 10:53:00 +0000 (12:53 +0200)
committerRalf Jung <post@ralfj.de>
Tue, 7 Jul 2020 20:48:51 +0000 (22:48 +0200)
tests/compile-fail/validity/invalid_bool_uninit.rs [new file with mode: 0644]
tests/compile-fail/validity/invalid_char_uninit.rs [new file with mode: 0644]
tests/compile-fail/validity/invalid_enum_tag_256variants_uninit.rs [new file with mode: 0644]
tests/compile-fail/validity/invalid_fnptr_uninit.rs [new file with mode: 0644]

diff --git a/tests/compile-fail/validity/invalid_bool_uninit.rs b/tests/compile-fail/validity/invalid_bool_uninit.rs
new file mode 100644 (file)
index 0000000..89b57b2
--- /dev/null
@@ -0,0 +1,10 @@
+#![allow(invalid_value)]
+
+union MyUninit {
+    init: (),
+    uninit: bool,
+}
+
+fn main() {
+    let _b = unsafe { MyUninit { init: () }.uninit }; //~ ERROR encountered uninitialized bytes, but expected a boolean
+}
diff --git a/tests/compile-fail/validity/invalid_char_uninit.rs b/tests/compile-fail/validity/invalid_char_uninit.rs
new file mode 100644 (file)
index 0000000..34798df
--- /dev/null
@@ -0,0 +1,10 @@
+#![allow(invalid_value)]
+
+union MyUninit {
+    init: (),
+    uninit: char,
+}
+
+fn main() {
+    let _b = unsafe { MyUninit { init: () }.uninit }; //~ ERROR encountered uninitialized bytes, but expected a valid unicode scalar value (in `0..=0x10FFFF` but not in `0xD800..=0xDFFF`)
+}
diff --git a/tests/compile-fail/validity/invalid_enum_tag_256variants_uninit.rs b/tests/compile-fail/validity/invalid_enum_tag_256variants_uninit.rs
new file mode 100644 (file)
index 0000000..c0f53d7
--- /dev/null
@@ -0,0 +1,270 @@
+#![allow(unused, deprecated, invalid_value)]
+
+#[derive(Copy, Clone)]
+enum A {
+    A0,
+    A1,
+    A2,
+    A3,
+    A4,
+    A5,
+    A6,
+    A7,
+    A8,
+    A9,
+    A10,
+    A11,
+    A12,
+    A13,
+    A14,
+    A15,
+    A16,
+    A17,
+    A18,
+    A19,
+    A20,
+    A21,
+    A22,
+    A23,
+    A24,
+    A25,
+    A26,
+    A27,
+    A28,
+    A29,
+    A30,
+    A31,
+    A32,
+    A33,
+    A34,
+    A35,
+    A36,
+    A37,
+    A38,
+    A39,
+    A40,
+    A41,
+    A42,
+    A43,
+    A44,
+    A45,
+    A46,
+    A47,
+    A48,
+    A49,
+    A50,
+    A51,
+    A52,
+    A53,
+    A54,
+    A55,
+    A56,
+    A57,
+    A58,
+    A59,
+    A60,
+    A61,
+    A62,
+    A63,
+    A64,
+    A65,
+    A66,
+    A67,
+    A68,
+    A69,
+    A70,
+    A71,
+    A72,
+    A73,
+    A74,
+    A75,
+    A76,
+    A77,
+    A78,
+    A79,
+    A80,
+    A81,
+    A82,
+    A83,
+    A84,
+    A85,
+    A86,
+    A87,
+    A88,
+    A89,
+    A90,
+    A91,
+    A92,
+    A93,
+    A94,
+    A95,
+    A96,
+    A97,
+    A98,
+    A99,
+    A100,
+    A101,
+    A102,
+    A103,
+    A104,
+    A105,
+    A106,
+    A107,
+    A108,
+    A109,
+    A110,
+    A111,
+    A112,
+    A113,
+    A114,
+    A115,
+    A116,
+    A117,
+    A118,
+    A119,
+    A120,
+    A121,
+    A122,
+    A123,
+    A124,
+    A125,
+    A126,
+    A127,
+    A128,
+    A129,
+    A130,
+    A131,
+    A132,
+    A133,
+    A134,
+    A135,
+    A136,
+    A137,
+    A138,
+    A139,
+    A140,
+    A141,
+    A142,
+    A143,
+    A144,
+    A145,
+    A146,
+    A147,
+    A148,
+    A149,
+    A150,
+    A151,
+    A152,
+    A153,
+    A154,
+    A155,
+    A156,
+    A157,
+    A158,
+    A159,
+    A160,
+    A161,
+    A162,
+    A163,
+    A164,
+    A165,
+    A166,
+    A167,
+    A168,
+    A169,
+    A170,
+    A171,
+    A172,
+    A173,
+    A174,
+    A175,
+    A176,
+    A177,
+    A178,
+    A179,
+    A180,
+    A181,
+    A182,
+    A183,
+    A184,
+    A185,
+    A186,
+    A187,
+    A188,
+    A189,
+    A190,
+    A191,
+    A192,
+    A193,
+    A194,
+    A195,
+    A196,
+    A197,
+    A198,
+    A199,
+    A200,
+    A201,
+    A202,
+    A203,
+    A204,
+    A205,
+    A206,
+    A207,
+    A208,
+    A209,
+    A210,
+    A211,
+    A212,
+    A213,
+    A214,
+    A215,
+    A216,
+    A217,
+    A218,
+    A219,
+    A220,
+    A221,
+    A222,
+    A223,
+    A224,
+    A225,
+    A226,
+    A227,
+    A228,
+    A229,
+    A230,
+    A231,
+    A232,
+    A233,
+    A234,
+    A235,
+    A236,
+    A237,
+    A238,
+    A239,
+    A240,
+    A241,
+    A242,
+    A243,
+    A244,
+    A245,
+    A246,
+    A247,
+    A248,
+    A249,
+    A250,
+    A251,
+    A252,
+    A253,
+    A254,
+    A255,
+}
+
+union MyUninit {
+    init: (),
+    uninit: A,
+}
+
+fn main() {
+    let _a = unsafe { MyUninit { init: () }.uninit }; //~ ERROR encountered uninitialized bytes, but expected a valid enum tag
+}
diff --git a/tests/compile-fail/validity/invalid_fnptr_uninit.rs b/tests/compile-fail/validity/invalid_fnptr_uninit.rs
new file mode 100644 (file)
index 0000000..dbd6711
--- /dev/null
@@ -0,0 +1,10 @@
+#![allow(invalid_value)]
+
+union MyUninit {
+    init: (),
+    uninit: fn(),
+}
+
+fn main() {
+    let _b = unsafe { MyUninit { init: () }.uninit }; //~ ERROR encountered uninitialized bytes, but expected a function pointer
+}