From 38edd2fbb7d8e93d95eb4ae2e72758f09e8ae5ad Mon Sep 17 00:00:00 2001 From: Matheus Date: Fri, 17 May 2024 19:38:55 -0300 Subject: [PATCH] mlibc port: getentropy --- patches/mlibc/jinx-working-patch.patch | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/patches/mlibc/jinx-working-patch.patch b/patches/mlibc/jinx-working-patch.patch index 2646b9d6..9d391aa1 100644 --- a/patches/mlibc/jinx-working-patch.patch +++ b/patches/mlibc/jinx-working-patch.patch @@ -192,10 +192,10 @@ index 0000000..e5b087a + diff --git mlibc-workdir/sysdeps/astral/generic/generic.cpp mlibc-workdir/sysdeps/astral/generic/generic.cpp new file mode 100644 -index 0000000..6562b81 +index 0000000..8cd908a --- /dev/null +++ mlibc-workdir/sysdeps/astral/generic/generic.cpp -@@ -0,0 +1,673 @@ +@@ -0,0 +1,692 @@ +#include +#include +#include @@ -327,6 +327,25 @@ index 0000000..6562b81 + return ENOSYS; + } + ++ #ifndef MLIBC_BUILDING_RTLD ++ int sys_getentropy(void *buffer, size_t length) { ++ int fd; ++ int error = sys_open("/dev/urandom", O_RDONLY, 0, &fd); ++ if (error) ++ mlibc::panicLogger() << "/dev/urandom open error " << strerror(error) << frg::endlog; ++ ++ ssize_t bytes; ++ error = sys_read(fd, buffer, length, &bytes); ++ if (error) { ++ mlibc::infoLogger() << "/dev/urandom read error " << strerror(error) << frg::endlog; ++ return error; ++ } ++ ++ sys_close(fd); ++ return 0; ++ } ++ #endif ++ + int sys_kill(int pid, int signal) { + long ret; + return syscall(SYSCALL_KILL, &ret, pid, signal);