From d05e0455bf4c98fa6d5e448670113163a0261dd3 Mon Sep 17 00:00:00 2001 From: Theodore Dubois Date: Sun, 24 Nov 2019 15:37:21 -0800 Subject: [PATCH] Increase limit on getrandom() length Fixed #567 --- kernel/random.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/kernel/random.c b/kernel/random.c index c03aa9f2..0a9bf9d2 100644 --- a/kernel/random.c +++ b/kernel/random.c @@ -19,12 +19,17 @@ int get_random(char *buf, size_t len) { } dword_t sys_getrandom(addr_t buf_addr, dword_t len, dword_t UNUSED(flags)) { - if (len > 256) + if (len > 1 << 20) return _EIO; - char buf[256]; - if (get_random(buf, len) != 0) + char *buf = malloc(len); + if (get_random(buf, len) != 0) { + free(buf); return _EIO; - if (user_write(buf_addr, buf, len)) + } + if (user_write(buf_addr, buf, len)) { + free(buf); return _EFAULT; + } + free(buf); return len; }