|
Message-ID: <20140712192017.GO179@brightrain.aerifal.cx> Date: Sat, 12 Jul 2014 15:20:17 -0400 From: Rich Felker <dalias@...c.org> To: musl@...ts.openwall.com Cc: Brent Cook <bcook@...nbsd.org> Subject: Re: [PATCH] implement issetugid(2) On Sat, Jul 12, 2014 at 11:55:06AM -0600, Brent Cook wrote: > >From OpenBSD 2.0 and later > http://www.openbsd.org/cgi-bin/man.cgi?query=issetugid&sektion=2 > --- > include/unistd.h | 1 + > src/unistd/issetugid.c | 9 +++++++++ > 2 files changed, 10 insertions(+) > create mode 100644 src/unistd/issetugid.c > > diff --git a/include/unistd.h b/include/unistd.h > index bb19cd8..30290c3 100644 > --- a/include/unistd.h > +++ b/include/unistd.h > @@ -109,6 +109,7 @@ uid_t geteuid(void); > gid_t getgid(void); > gid_t getegid(void); > int getgroups(int, gid_t []); > +int issetugid(void); > int setuid(uid_t); > int setreuid(uid_t, uid_t); > int seteuid(uid_t); > diff --git a/src/unistd/issetugid.c b/src/unistd/issetugid.c > new file mode 100644 > index 0000000..8c81336 > --- /dev/null > +++ b/src/unistd/issetugid.c > @@ -0,0 +1,9 @@ > +#include <errno.h> > +#include <unistd.h> > +#include <sys/auxv.h> > + > +int issetugid(void) > +{ > + errno = 0; > + return !(getauxval(AT_SECURE) == 0 && errno != ENOENT); > +} > -- > 1.9.1 If this interface is to be added, it should be consistent with the internal logic and use libc.secure, not getauxval(AT_SECURE). The proposed code above presumably gives false positives for old kernels where AT_SECURE did not exist, whereas the internal libc logic also checks AT_E?[UG]ID. 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.