Here's a really quick implementation just to get some feedback. Do you have any 
suggestions for testing it or changes?

Thanks
Andrew

>From c9a6c3dcc5c4c880f3543961c5f1ad31157b788d Mon Sep 17 00:00:00 2001
From: Andrew Eggenberger <andrew.eggenber...@gmail.com>
Date: Tue, 29 Oct 2019 00:19:28 -0500
Subject: [PATCH] naive getrandom and getentropy

---
 stdlib/getentropy.c | 13 ++++++++-----
 stdlib/getrandom.c  | 16 +++++++++++-----
 2 files changed, 19 insertions(+), 10 deletions(-)

diff --git a/stdlib/getentropy.c b/stdlib/getentropy.c
index b73efedff0..ff0731057b 100644
--- a/stdlib/getentropy.c
+++ b/stdlib/getentropy.c
@@ -1,4 +1,4 @@
-/* Stub for getentropy.
+/* Hurdish implementation of getentropy.
    Copyright (C) 2016-2018 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -24,8 +24,11 @@
 int
 getentropy (void *buffer, size_t length)
 {
-  __set_errno (ENOSYS);
-  return -1;
+  size_t bytes_read;
+  bytes_read = getrandom(buffer, length, 0);
+  if (bytes_read != length){
+    __set_errno (EIO);
+    return -1;
+  }
+  return 0;
 }
-
-stub_warning (getentropy)
diff --git a/stdlib/getrandom.c b/stdlib/getrandom.c
index 45234bea17..e2b091cc50 100644
--- a/stdlib/getrandom.c
+++ b/stdlib/getrandom.c
@@ -1,4 +1,4 @@
-/* Stub for getrandom.
+/* Hurdish implementation of getrandom
    Copyright (C) 2016-2018 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -18,14 +18,20 @@
 
 #include <sys/random.h>
 #include <errno.h>
+#include <stdlib.h>
+#include <stdio.h>
 
 /* Write up to LENGTH bytes of randomness starting at BUFFER.
    Return the number of bytes written, or -1 on error.  */
 ssize_t
 getrandom (void *buffer, size_t length, unsigned int flags)
 {
-  __set_errno (ENOSYS);
-  return -1;
-}
+  FILE * random_source;
+  if (flags & GRND_RANDOM){
+    random_source = fopen("/dev/random", "r");
+    return fread(buffer, 1, length, random_source);
+  }
 
-stub_warning (getrandom)
+  random_source = fopen("/dev/urandom", "r");
+  return fread(buffer, 1, length, random_source);
+}
-- 
2.23.0

Reply via email to