mirror of
https://github.com/ziglang/zig.git
synced 2026-02-04 05:33:39 +00:00
cap getdents length argument to INT_MAX
the linux syscall treats this argument as having type int, so passing extremely long buffer sizes would be misinterpreted by the kernel. since "short reads" are always acceptable, just cap it down. patch based on musl commit 3d178a7e2b75066593fbd5705742c5808395d90d
This commit is contained in:
parent
fc9e28ea37
commit
1d2fc446bd
@ -106,12 +106,22 @@ pub fn getcwd(buf: [*]u8, size: usize) usize {
|
||||
return syscall2(SYS_getcwd, @ptrToInt(buf), size);
|
||||
}
|
||||
|
||||
pub fn getdents(fd: i32, dirp: [*]u8, count: usize) usize {
|
||||
return syscall3(SYS_getdents, @bitCast(usize, isize(fd)), @ptrToInt(dirp), count);
|
||||
pub fn getdents(fd: i32, dirp: [*]u8, len: usize) usize {
|
||||
return syscall3(
|
||||
SYS_getdents,
|
||||
@bitCast(usize, isize(fd)),
|
||||
@ptrToInt(dirp),
|
||||
std.math.min(len, maxInt(c_int)),
|
||||
);
|
||||
}
|
||||
|
||||
pub fn getdents64(fd: i32, dirp: [*]u8, count: usize) usize {
|
||||
return syscall3(SYS_getdents64, @bitCast(usize, isize(fd)), @ptrToInt(dirp), count);
|
||||
pub fn getdents64(fd: i32, dirp: [*]u8, len: usize) usize {
|
||||
return syscall3(
|
||||
SYS_getdents64,
|
||||
@bitCast(usize, isize(fd)),
|
||||
@ptrToInt(dirp),
|
||||
std.math.min(len, maxInt(c_int)),
|
||||
);
|
||||
}
|
||||
|
||||
pub fn inotify_init1(flags: u32) usize {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user