diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2022-03-27 15:37:09 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-03-27 15:37:09 -0400 |
| commit | 052079c99455d01312d377d72fa1b8b5c0b22aad (patch) | |
| tree | 173d2502fca52124fc6ab1616392547da6679e09 /test | |
| parent | 0501962b4c01ee511aa0ae4b41cca4af7209bd8e (diff) | |
| parent | 3c918184385f9ffc80693fb2683b4a9b574f9b66 (diff) | |
| download | zig-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.zig | 1 | ||||
| -rw-r--r-- | test/behavior/fn.zig | 1 | ||||
| -rw-r--r-- | test/behavior/for.zig | 1 | ||||
| -rw-r--r-- | test/behavior/int128.zig | 1 | ||||
| -rw-r--r-- | test/behavior/slice.zig | 1 | ||||
| -rw-r--r-- | test/compile_errors/stage2/slice_of_null_pointer.zig | 10 |
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 |
