From c0c228b758150e017185dc280ef020ec3b7efdcf Mon Sep 17 00:00:00 2001 From: Euan Torano Date: Fri, 2 Aug 2019 13:19:49 +0100 Subject: [PATCH] Check if /dev/urandom is a character device --- std/os.zig | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/std/os.zig b/std/os.zig index 9ff2e8f87..da1d71d6f 100644 --- a/std/os.zig +++ b/std/os.zig @@ -133,6 +133,11 @@ fn getRandomBytesDevURandom(buf: []u8) !void { const fd = try openC(c"/dev/urandom", O_RDONLY | O_CLOEXEC, 0); defer close(fd); + const st = try fstat(fd); + if (!S_ISCHR(st.mode)) { + return OpenError.Unexpected; + } + const stream = &std.fs.File.openHandle(fd).inStream().stream; stream.readNoEof(buf) catch return error.Unexpected; }