aboutsummaryrefslogtreecommitdiff
path: root/src/Compilation.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2024-07-03 13:28:44 -0700
committerAndrew Kelley <andrew@ziglang.org>2024-07-04 17:12:45 -0700
commit29512f0edd9134ffe1f645ad69b5c4a3e1a7c7c3 (patch)
treeace84cca69e91f212dd49e56b151e0ff8a07e9fe /src/Compilation.zig
parentcac7e5afc7624ef18fe7bc8c6acd743f8b5a7eaf (diff)
downloadzig-29512f0edd9134ffe1f645ad69b5c4a3e1a7c7c3.tar.gz
zig-29512f0edd9134ffe1f645ad69b5c4a3e1a7c7c3.zip
Compilation: don't give len=0 bufs to pwritev
The OS returns EFAULT for undefined pointers, even when len=0.
Diffstat (limited to 'src/Compilation.zig')
-rw-r--r--src/Compilation.zig3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/Compilation.zig b/src/Compilation.zig
index 9d3a31e792..38651281b5 100644
--- a/src/Compilation.zig
+++ b/src/Compilation.zig
@@ -2827,6 +2827,9 @@ pub fn saveState(comp: *Compilation) !void {
}
fn addBuf(bufs_list: []std.posix.iovec_const, bufs_len: *usize, buf: []const u8) void {
+ // Even when len=0, the undefined pointer might cause EFAULT.
+ if (buf.len == 0) return;
+
const i = bufs_len.*;
bufs_len.* = i + 1;
bufs_list[i] = .{