hurd: Make getrandom a stub inside the random translator

glibc uses /dev/urandom for getrandom(), and from version 2.34 malloc
initialization uses it. We have to detect when we are running the random
translator itself, in which case we can't read ourself.
This commit is contained in:
Samuel Thibault 2021-12-30 21:25:24 +01:00
parent 4dfa8f4870
commit 33e8e95cbd

View file

@ -21,6 +21,8 @@
#include <unistd.h>
#include <not-cancel.h>
extern char *trivfs_server_name __attribute__((weak));
/* Write up to LENGTH bytes of randomness starting at BUFFER.
Return the number of bytes written, or -1 on error. */
ssize_t
@ -31,6 +33,17 @@ __getrandom (void *buffer, size_t length, unsigned int flags)
size_t amount_read;
int fd;
if (&trivfs_server_name && trivfs_server_name
&& trivfs_server_name[0] == 'r'
&& trivfs_server_name[1] == 'a'
&& trivfs_server_name[2] == 'n'
&& trivfs_server_name[3] == 'd'
&& trivfs_server_name[4] == 'o'
&& trivfs_server_name[5] == 'm'
&& trivfs_server_name[6] == '\0')
/* We are random, don't try to read ourselves! */
return length;
if (flags & GRND_RANDOM)
random_source = "/dev/random";