diff options
| author | Euan Torano <euantorano@gmail.com> | 2019-08-02 13:19:49 +0100 |
|---|---|---|
| committer | Euan Torano <euantorano@gmail.com> | 2019-08-02 13:19:49 +0100 |
| commit | c0c228b758150e017185dc280ef020ec3b7efdcf (patch) | |
| tree | 5983981ffd565f03269941a2d37a2047afb06eae /std/os.zig | |
| parent | 6cb4cac5cd1c68f41c62a3c23b09513988337c8d (diff) | |
| download | zig-c0c228b758150e017185dc280ef020ec3b7efdcf.tar.gz zig-c0c228b758150e017185dc280ef020ec3b7efdcf.zip | |
Check if /dev/urandom is a character device
Diffstat (limited to 'std/os.zig')
| -rw-r--r-- | std/os.zig | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/std/os.zig b/std/os.zig index 9ff2e8f87f..da1d71d6fc 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; } |
