Hello,

Andrew Eggenberger, le mar. 29 oct. 2019 23:28:26 -0500, a ecrit:
> Updated patch attached.

Thanks!

> +/* Implementation of getentropy based on the getrandom system call.

getrandom is not a system call on GNU/Hurd, just say "on getrandom".

> +      /* NB: No cancellation point.  */
> +      ssize_t bytes = getrandom(buffer, end - buffer, 0);

Ah, yes, the cancelation thing. Inside getrandom(), rather use
__open_nocancel, __read_nocancel, and __close_nocancel.

> +/* 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)
> +{
> +  char* random_source = "/dev/urandom";

You can even make it a const char* actually.

> +  int amount_read, fp;
> +
> +  if (flags & GRND_RANDOM){
> +    random_source = "/dev/random";
> +  }
> +
> +  fp = open(random_source, O_RDONLY);
> +  amount_read = read(fp, buffer, length);

You need to check against errors, and in such a case return -1 (leaving
errno as set by the function).

Samuel

Reply via email to