diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libc/net/Makefile.inc | 6 | ||||
-rw-r--r-- | lib/libc/net/getpeereid.3 (renamed from lib/libc/sys/getpeereid.2) | 14 | ||||
-rw-r--r-- | lib/libc/net/getpeereid.c | 36 | ||||
-rw-r--r-- | lib/libc/sys/Makefile.inc | 6 | ||||
-rw-r--r-- | lib/libc/sys/getpeername.2 | 6 | ||||
-rw-r--r-- | lib/libc/sys/getsockname.2 | 6 |
6 files changed, 52 insertions, 22 deletions
diff --git a/lib/libc/net/Makefile.inc b/lib/libc/net/Makefile.inc index 66f181d4736..530bc3f3f04 100644 --- a/lib/libc/net/Makefile.inc +++ b/lib/libc/net/Makefile.inc @@ -1,4 +1,4 @@ -# $OpenBSD: Makefile.inc,v 1.47 2010/02/03 20:49:00 miod Exp $ +# $OpenBSD: Makefile.inc,v 1.48 2010/07/01 19:15:30 deraadt Exp $ # net sources .PATH: ${LIBCSRCDIR}/arch/${MACHINE_CPU}/net ${LIBCSRCDIR}/net @@ -7,7 +7,7 @@ CFLAGS+=-DRESOLVSORT SRCS+= base64.c freeaddrinfo.c gai_strerror.c getaddrinfo.c gethostnamadr.c \ getifaddrs.c getnameinfo.c getnetbyaddr.c getnetbyname.c getnetent.c \ - getnetnamadr.c getproto.c getprotoent.c getprotoname.c \ + getnetnamadr.c getpeereid.c getproto.c getprotoent.c getprotoname.c \ getservbyname.c getservbyport.c getservent.c getrrsetbyname.c \ herror.c if_indextoname.c if_nameindex.c if_nametoindex.c inet_addr.c \ inet_lnaof.c inet_makeaddr.c inet_neta.c inet_netof.c inet_network.c \ @@ -28,7 +28,7 @@ SRCS+= ip6opt.c rthdr.c vars6.c .include "${LIBCSRCDIR}/arch/${MACHINE_CPU}/net/Makefile.inc" MAN+= byteorder.3 ethers.3 gai_strerror.3 getaddrinfo.3 gethostbyname.3 \ - getifaddrs.3 getnameinfo.3 getnetent.3 getprotoent.3 \ + getifaddrs.3 getnameinfo.3 getnetent.3 getpeereid.3 getprotoent.3 \ getrrsetbyname.3 getservent.3 if_indextoname.3 inet.3 \ inet_net.3 inet6_option_space.3 inet6_rthdr_space.3 \ inet6_opt_init.3 inet6_rth_space.3 \ diff --git a/lib/libc/sys/getpeereid.2 b/lib/libc/net/getpeereid.3 index 6db0ff8eafa..c1671a75167 100644 --- a/lib/libc/sys/getpeereid.2 +++ b/lib/libc/net/getpeereid.3 @@ -1,4 +1,4 @@ -.\" $OpenBSD: getpeereid.2,v 1.9 2009/12/29 10:25:43 sobrado Exp $ +.\" $OpenBSD: getpeereid.3,v 1.1 2010/07/01 19:15:30 deraadt Exp $ .\" .\" Copyright (c) 1983, 1991, 1993 .\" The Regents of the University of California. All rights reserved. @@ -26,8 +26,8 @@ .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. -.Dd $Mdocdate: December 29 2009 $ -.Dt GETPEEREID 2 +.Dd $Mdocdate: July 1 2010 $ +.Dt GETPEEREID 3 .Os .Sh NAME .Nm getpeereid @@ -103,19 +103,13 @@ The socket is not connected. .It Bq Er ENOBUFS Insufficient resources were available in the system to perform the operation. -.It Bq Er EFAULT -The -.Fa euid -or -.Fa egid -parameters point to memory not in a valid part of the -process address space. .El .Sh SEE ALSO .Xr accept 2 , .Xr bind 2 , .Xr getpeername 2 , .Xr getsockname 2 , +.Xr getsockopt 2 , .Xr socket 2 , .Xr unix 4 .Sh HISTORY diff --git a/lib/libc/net/getpeereid.c b/lib/libc/net/getpeereid.c new file mode 100644 index 00000000000..208e541f172 --- /dev/null +++ b/lib/libc/net/getpeereid.c @@ -0,0 +1,36 @@ +/* $OpenBSD: getpeereid.c,v 1.1 2010/07/01 19:15:30 deraadt Exp $ */ + +/* + * Copyright (c) 2010 Theo de Raadt <deraadt@openbsd.org> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include <sys/types.h> +#include <sys/socket.h> + +int +getpeereid(int s, uid_t *euid, gid_t *egid) +{ + struct sockpeercred creds; + socklen_t credslen = sizeof(creds); + int error; + + error = getsockopt(s, SOL_SOCKET, SO_PEERCRED, + &creds, &credslen); + if (error) + return (error); + *euid = creds.uid; + *egid = creds.gid; + return (0); +} diff --git a/lib/libc/sys/Makefile.inc b/lib/libc/sys/Makefile.inc index 4d31ad1411c..ecfeba72cff 100644 --- a/lib/libc/sys/Makefile.inc +++ b/lib/libc/sys/Makefile.inc @@ -1,4 +1,4 @@ -# $OpenBSD: Makefile.inc,v 1.90 2010/05/18 22:24:55 tedu Exp $ +# $OpenBSD: Makefile.inc,v 1.91 2010/07/01 19:15:30 deraadt Exp $ # $NetBSD: Makefile.inc,v 1.35 1995/10/16 23:49:07 jtc Exp $ # @(#)Makefile.inc 8.1 (Berkeley) 6/17/93 @@ -43,7 +43,7 @@ ASM= accept.o access.o acct.o adjfreq.o adjtime.o bind.o chdir.o chflags.o \ fchflags.o fchmod.o fchown.o fcntl.o fhopen.o fhstat.o fhstatfs.o \ flock.o fpathconf.o fstat.o \ fstatfs.o fsync.o futimes.o getdirentries.o getegid.o geteuid.o \ - getfh.o getfsstat.o getgid.o getgroups.o getitimer.o getpeereid.o \ + getfh.o getfsstat.o getgid.o getgroups.o getitimer.o \ getpeername.o \ getpgid.o \ getpgrp.o getpid.o getppid.o getpriority.o getresgid.o getresuid.o \ @@ -219,7 +219,7 @@ MAN+= accept.2 access.2 acct.2 adjfreq.2 adjtime.2 bind.2 brk.2 chdir.2 \ dup.2 execve.2 _exit.2 fcntl.2 fhopen.2 \ flock.2 fork.2 fsync.2 getdirentries.2 \ getfh.2 getfsstat.2 getgid.2 getgroups.2 getitimer.2 getlogin.2 \ - getpeername.2 getpeereid.2 getpgrp.2 getrdomain.2 \ + getpeername.2 getpgrp.2 getrdomain.2 \ getpid.2 getpriority.2 getrlimit.2 getrusage.2 getsid.2 getsockname.2 \ getsockopt.2 gettimeofday.2 getuid.2 intro.2 issetugid.2 ioctl.2 \ kill.2 kqueue.2 ktrace.2 link.2 \ diff --git a/lib/libc/sys/getpeername.2 b/lib/libc/sys/getpeername.2 index f2a929685bd..95d089b6223 100644 --- a/lib/libc/sys/getpeername.2 +++ b/lib/libc/sys/getpeername.2 @@ -1,4 +1,4 @@ -.\" $OpenBSD: getpeername.2,v 1.22 2007/05/31 19:19:32 jmc Exp $ +.\" $OpenBSD: getpeername.2,v 1.23 2010/07/01 19:15:30 deraadt Exp $ .\" $NetBSD: getpeername.2,v 1.6 1995/10/12 15:40:56 jtc Exp $ .\" .\" Copyright (c) 1983, 1991, 1993 @@ -30,7 +30,7 @@ .\" .\" @(#)getpeername.2 8.1 (Berkeley) 6/4/93 .\" -.Dd $Mdocdate: May 31 2007 $ +.Dd $Mdocdate: July 1 2010 $ .Dt GETPEERNAME 2 .Os .Sh NAME @@ -129,7 +129,7 @@ process address space. .Sh SEE ALSO .Xr accept 2 , .Xr bind 2 , -.Xr getpeereid 2 , +.Xr getpeereid 3 , .Xr getsockname 2 , .Xr socket 2 .Sh HISTORY diff --git a/lib/libc/sys/getsockname.2 b/lib/libc/sys/getsockname.2 index 6d6bfcd02cb..25b5f5ee45a 100644 --- a/lib/libc/sys/getsockname.2 +++ b/lib/libc/sys/getsockname.2 @@ -1,4 +1,4 @@ -.\" $OpenBSD: getsockname.2,v 1.25 2009/12/29 10:25:43 sobrado Exp $ +.\" $OpenBSD: getsockname.2,v 1.26 2010/07/01 19:15:30 deraadt Exp $ .\" $NetBSD: getsockname.2,v 1.6 1995/10/12 15:41:00 jtc Exp $ .\" .\" Copyright (c) 1983, 1991, 1993 @@ -30,7 +30,7 @@ .\" .\" @(#)getsockname.2 8.1 (Berkeley) 6/4/93 .\" -.Dd $Mdocdate: December 29 2009 $ +.Dd $Mdocdate: July 1 2010 $ .Dt GETSOCKNAME 2 .Os .Sh NAME @@ -148,7 +148,7 @@ process address space. .Sh SEE ALSO .Xr accept 2 , .Xr bind 2 , -.Xr getpeereid 2 , +.Xr getpeereid 3 , .Xr getpeername 2 , .Xr socket 2 .Sh HISTORY |