diff options
author | 2012-04-14 09:07:42 +0000 | |
---|---|---|
committer | 2012-04-14 09:07:42 +0000 | |
commit | 1cd4add40e57d2a02a46f772826922b28e8730d7 (patch) | |
tree | daa9bf61d8e592458c9e1dc063382360a7955fe5 | |
parent | regen (diff) | |
download | wireguard-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.c | 6 |
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 *); |