authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-07-03 13:28:44-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-07-04 17:12:45-07:00
log29512f0edd9134ffe1f645ad69b5c4a3e1a7c7c3
treeace84cca69e91f212dd49e56b151e0ff8a07e9fe
parentcac7e5afc7624ef18fe7bc8c6acd743f8b5a7eaf

Compilation: don't give len=0 bufs to pwritev

The OS returns EFAULT for undefined pointers, even when len=0.

1 files changed, 3 insertions(+), 0 deletions(-)

src/Compilation.zig+3
...@@ -2827,6 +2827,9 @@ pub fn saveState(comp: *Compilation) !void {...@@ -2827,6 +2827,9 @@ pub fn saveState(comp: *Compilation) !void {
2827}2827}
28282828
2829fn addBuf(bufs_list: []std.posix.iovec_const, bufs_len: *usize, buf: []const u8) void {2829fn addBuf(bufs_list: []std.posix.iovec_const, bufs_len: *usize, buf: []const u8) void {
2830 // Even when len=0, the undefined pointer might cause EFAULT.
2831 if (buf.len == 0) return;
2832
2830 const i = bufs_len.*;2833 const i = bufs_len.*;
2831 bufs_len.* = i + 1;2834 bufs_len.* = i + 1;
2832 bufs_list[i] = .{2835 bufs_list[i] = .{