summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/libc/net/Makefile.inc6
-rw-r--r--lib/libc/net/getpeereid.3 (renamed from lib/libc/sys/getpeereid.2)14
-rw-r--r--lib/libc/net/getpeereid.c36
-rw-r--r--lib/libc/sys/Makefile.inc6
-rw-r--r--lib/libc/sys/getpeername.26
-rw-r--r--lib/libc/sys/getsockname.26
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