Check if /dev/urandom is a character device

master
Euan Torano 2019-08-02 13:19:49 +01:00
parent 6cb4cac5cd
commit c0c228b758
1 changed files with 5 additions and 0 deletions

View File

@ -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;
}