![]() |
|
Message-ID: <20180101204748.GH1627@brightrain.aerifal.cx> Date: Mon, 1 Jan 2018 15:47:48 -0500 From: Rich Felker <dalias@...c.org> To: musl@...ts.openwall.com Subject: Re: [PATCH] Add getrandom syscall wrapper function On Mon, Jan 01, 2018 at 09:31:23PM +0100, Hauke Mehrtens wrote: > This syscall is available since Linux 3.17 and was also implemented in > glibc in version 2.25. This is a pure syscall wrapper liker glibc does > it. > --- > include/sys/random.h | 19 +++++++++++++++++++ > src/linux/getrandom.c | 11 +++++++++++ > 2 files changed, 30 insertions(+) > create mode 100644 include/sys/random.h > create mode 100644 src/linux/getrandom.c > > diff --git a/include/sys/random.h b/include/sys/random.h > new file mode 100644 > index 00000000..5540f877 > --- /dev/null > +++ b/include/sys/random.h > @@ -0,0 +1,19 @@ > +#ifndef _SYS_RANDOM_H > +#define _SYS_RANDOM_H > +#ifdef __cplusplus > +extern "C" { > +#endif > + > +#define __NEED_size_t > +#define __NEED_ssize_t > +#include <bits/alltypes.h> > + > +#define GRND_NONBLOCK 0x0001 > +#define GRND_RANDOM 0x0002 > + > +ssize_t getrandom(void *buf, size_t buflen, unsigned int flags); > + > +#ifdef __cplusplus > +} > +#endif > +#endif > diff --git a/src/linux/getrandom.c b/src/linux/getrandom.c > new file mode 100644 > index 00000000..50b07df9 > --- /dev/null > +++ b/src/linux/getrandom.c > @@ -0,0 +1,11 @@ > +#include <sys/random.h> > +#include "syscall.h" > + > +ssize_t getrandom(void *buf, size_t buflen, unsigned int flags) > +{ > +#ifdef SYS_getrandom > + return syscall_cp(SYS_getrandom, buf, buflen, flags); > +#else > + return __syscall_ret(-ENOSYS); > +#endif > +} > -- > 2.11.0 The #ifdef doesn't make sense; if the definition is missing then it's a bug in musl source. Aside from that I think the patch is okay but I'm not sure it's complete. There should probably also be getentropy(), and we've discussed in the past but never reached any conclusion on whether there should be a fallback when the syscall doesn't exist (running on old kernel). Rich
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.