summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorclaudio <claudio@openbsd.org>2012-04-14 09:07:42 +0000
committerclaudio <claudio@openbsd.org>2012-04-14 09:07:42 +0000
commit1cd4add40e57d2a02a46f772826922b28e8730d7 (patch)
treedaa9bf61d8e592458c9e1dc063382360a7955fe5
parentregen (diff)
downloadwireguard-openbsd-1cd4add40e57d2a02a46f772826922b28e8730d7.tar.xz
wireguard-openbsd-1cd4add40e57d2a02a46f772826922b28e8730d7.zip
Free tmp buffer in case the cluster allocation failed. Found by David Hill.
-rw-r--r--sys/kern/uipc_usrreq.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/kern/uipc_usrreq.c b/sys/kern/uipc_usrreq.c
index 7f3bcbf0ca7..dbab77cd65e 100644
--- a/sys/kern/uipc_usrreq.c
+++ b/sys/kern/uipc_usrreq.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: uipc_usrreq.c,v 1.62 2012/04/14 08:47:27 guenther Exp $ */
+/* $OpenBSD: uipc_usrreq.c,v 1.63 2012/04/14 09:07:42 claudio Exp $ */
/* $NetBSD: uipc_usrreq.c,v 1.18 1996/02/09 19:00:50 christos Exp $ */
/*
@@ -787,8 +787,10 @@ morespace:
/* allocate a cluster and try again */
MCLGET(control, M_WAIT);
- if ((control->m_flags & M_EXT) == 0)
+ if ((control->m_flags & M_EXT) == 0) {
+ free(tmp, M_TEMP);
return (ENOBUFS); /* allocation failed */
+ }
/* copy the data back into the cluster */
cm = mtod(control, struct cmsghdr *);