summaryrefslogtreecommitdiffstats
path: root/sys/compat/linux/linux_socket.c
diff options
context:
space:
mode:
authorpirofti <pirofti@openbsd.org>2011-09-19 22:37:03 +0000
committerpirofti <pirofti@openbsd.org>2011-09-19 22:37:03 +0000
commit13ebf21f177ffafbae1daebcc6b3550207ddfbb1 (patch)
tree91ee0fe7dc52537e74eae5b30fb6edb2e2706bdb /sys/compat/linux/linux_socket.c
parentRemove the terminal frontend flag TERMP_NOLPAD. (diff)
downloadwireguard-openbsd-13ebf21f177ffafbae1daebcc6b3550207ddfbb1.tar.xz
wireguard-openbsd-13ebf21f177ffafbae1daebcc6b3550207ddfbb1.zip
Fix Unix socket handling when the length is too large by trimming.
Okay claudio@
Diffstat (limited to 'sys/compat/linux/linux_socket.c')
-rw-r--r--sys/compat/linux/linux_socket.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/compat/linux/linux_socket.c b/sys/compat/linux/linux_socket.c
index 45676c61104..b711c934f6e 100644
--- a/sys/compat/linux/linux_socket.c
+++ b/sys/compat/linux/linux_socket.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: linux_socket.c,v 1.41 2011/07/09 00:47:18 henning Exp $ */
+/* $OpenBSD: linux_socket.c,v 1.42 2011/09/19 22:37:03 pirofti Exp $ */
/* $NetBSD: linux_socket.c,v 1.14 1996/04/05 00:01:50 christos Exp $ */
/*
@@ -47,6 +47,7 @@
#include <sys/protosw.h>
#include <sys/socket.h>
#include <sys/socketvar.h>
+#include <sys/un.h>
#include <net/if.h>
#include <net/if_types.h>
#include <net/if_dl.h>
@@ -1250,7 +1251,10 @@ linux_sa_get(p, sgp, sap, osa, osalen)
return (EINVAL);
}
- alloclen = *osalen;
+ if (osa->sa_family == AF_UNIX && *osalen > sizeof(struct sockaddr_un))
+ alloclen = sizeof(struct sockaddr_un);
+ else
+ alloclen = *osalen;
#ifdef INET6
oldv6size = 0;
/*