aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2022-03-27 15:37:09 -0400
committerGitHub <noreply@github.com>2022-03-27 15:37:09 -0400
commit052079c99455d01312d377d72fa1b8b5c0b22aad (patch)
tree173d2502fca52124fc6ab1616392547da6679e09 /test
parent0501962b4c01ee511aa0ae4b41cca4af7209bd8e (diff)
parent3c918184385f9ffc80693fb2683b4a9b574f9b66 (diff)
downloadzig-052079c99455d01312d377d72fa1b8b5c0b22aad.tar.gz
zig-052079c99455d01312d377d72fa1b8b5c0b22aad.zip
Merge pull request #11302 from mitchellh/slice-null-cptr
stage2: runtime safety checks for slicing a null C pointer and @intCast truncating bits
Diffstat (limited to 'test')
-rw-r--r--test/behavior/eval.zig1
-rw-r--r--test/behavior/fn.zig1
-rw-r--r--test/behavior/for.zig1
-rw-r--r--test/behavior/int128.zig1
-rw-r--r--test/behavior/slice.zig1
-rw-r--r--test/compile_errors/stage2/slice_of_null_pointer.zig10
6 files changed, 15 insertions, 0 deletions
diff --git a/test/behavior/eval.zig b/test/behavior/eval.zig
index e3024a3895..9cad1c6106 100644
--- a/test/behavior/eval.zig
+++ b/test/behavior/eval.zig
@@ -443,6 +443,7 @@ fn copyWithPartialInline(s: []u32, b: []u8) void {
test "binary math operator in partially inlined function" {
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
var s: [4]u32 = undefined;
var b: [16]u8 = undefined;
diff --git a/test/behavior/fn.zig b/test/behavior/fn.zig
index ed71bf3d59..68eb730b57 100644
--- a/test/behavior/fn.zig
+++ b/test/behavior/fn.zig
@@ -315,6 +315,7 @@ test "function pointers" {
if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
const fns = [_]*const @TypeOf(fn1){
&fn1,
diff --git a/test/behavior/for.zig b/test/behavior/for.zig
index 5188f02381..db3288a4d1 100644
--- a/test/behavior/for.zig
+++ b/test/behavior/for.zig
@@ -69,6 +69,7 @@ test "basic for loop" {
if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
+ if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
const expected_result = [_]u8{ 9, 8, 7, 6, 0, 1, 2, 3 } ** 3;
diff --git a/test/behavior/int128.zig b/test/behavior/int128.zig
index f57999511c..08c6dd0e4d 100644
--- a/test/behavior/int128.zig
+++ b/test/behavior/int128.zig
@@ -46,6 +46,7 @@ test "int128" {
if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
var buff: i128 = -1;
try expect(buff < 0 and (buff + 1) == 0);
diff --git a/test/behavior/slice.zig b/test/behavior/slice.zig
index 9f3ba001cf..a9f89130a1 100644
--- a/test/behavior/slice.zig
+++ b/test/behavior/slice.zig
@@ -233,6 +233,7 @@ fn sliceFromLenToLen(a_slice: []u8, start: usize, end: usize) []u8 {
test "C pointer" {
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
+ if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
var buf: [*c]const u8 = "kjdhfkjdhfdkjhfkfjhdfkjdhfkdjhfdkjhf";
var len: u32 = 10;
diff --git a/test/compile_errors/stage2/slice_of_null_pointer.zig b/test/compile_errors/stage2/slice_of_null_pointer.zig
new file mode 100644
index 0000000000..1e3f0d6aee
--- /dev/null
+++ b/test/compile_errors/stage2/slice_of_null_pointer.zig
@@ -0,0 +1,10 @@
+comptime {
+ var x: [*c]u8 = null;
+ var runtime_len: usize = 0;
+ var y = x[0..runtime_len];
+ _ = y;
+}
+
+// slice of null C pointer
+//
+// :4:14: error: slice of null pointer