summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkrw <krw@openbsd.org>2008-05-06 07:18:09 +0000
committerkrw <krw@openbsd.org>2008-05-06 07:18:09 +0000
commit14eacac8667239e358344b6648e20fad9d9c0ecd (patch)
treeffbe1bd42c6f5b1cc6dc2608caf446920b72efd3
parentwhen pax is running in -u mode, and no files are beeing updated because (diff)
downloadwireguard-openbsd-14eacac8667239e358344b6648e20fad9d9c0ecd.tar.xz
wireguard-openbsd-14eacac8667239e358344b6648e20fad9d9c0ecd.zip
M_PREPEND can set its first parameter to NULL, and all other code
using M_PREPEND checks for NULL after the invocation. So check here too and return ENOBUFS if NULL is detected. ok henning@
-rw-r--r--sys/net/if_tun.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/net/if_tun.c b/sys/net/if_tun.c
index 98872dbc3ca..390a1b16ae3 100644
--- a/sys/net/if_tun.c
+++ b/sys/net/if_tun.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_tun.c,v 1.91 2007/12/20 02:53:02 brad Exp $ */
+/* $OpenBSD: if_tun.c,v 1.92 2008/05/06 07:18:09 krw Exp $ */
/* $NetBSD: if_tun.c,v 1.24 1996/05/07 02:40:48 thorpej Exp $ */
/*
@@ -551,6 +551,8 @@ tun_output(struct ifnet *ifp, struct mbuf *m0, struct sockaddr *dst,
return (ether_output(ifp, m0, dst, rt));
M_PREPEND(m0, sizeof(*af), M_DONTWAIT);
+ if (m0 == NULL)
+ return (ENOBUFS);
af = mtod(m0, u_int32_t *);
*af = htonl(dst->sa_family);