summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorprovos <provos@openbsd.org>2001-05-02 08:33:49 +0000
committerprovos <provos@openbsd.org>2001-05-02 08:33:49 +0000
commit8448767ef39e0a8f9b3947d6cc696d03eb19bf26 (patch)
treeb4d1b6d1c3c80badadeb728a2466285131cc5a10
parentimplement "deletetunnel" (removes tunnel outer IP address pair) (diff)
downloadwireguard-openbsd-8448767ef39e0a8f9b3947d6cc696d03eb19bf26.tar.xz
wireguard-openbsd-8448767ef39e0a8f9b3947d6cc696d03eb19bf26.zip
prevent overflow in sbreserve; from wollman@freebsd via netbsd
-rw-r--r--sys/kern/uipc_socket2.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/kern/uipc_socket2.c b/sys/kern/uipc_socket2.c
index 68cb8c9eca2..1f30c4a8ded 100644
--- a/sys/kern/uipc_socket2.c
+++ b/sys/kern/uipc_socket2.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: uipc_socket2.c,v 1.15 2000/11/16 20:02:19 provos Exp $ */
+/* $OpenBSD: uipc_socket2.c,v 1.16 2001/05/02 08:33:49 provos Exp $ */
/* $NetBSD: uipc_socket2.c,v 1.11 1996/02/04 02:17:55 christos Exp $ */
/*
@@ -394,7 +394,8 @@ sbreserve(sb, cc)
u_long cc;
{
- if (cc == 0 || cc > sb_max * MCLBYTES / (MSIZE + MCLBYTES))
+ if (cc == 0 ||
+ (u_int64_t)cc > (u_int64_t)sb_max * MCLBYTES / (MSIZE + MCLBYTES))
return (0);
sb->sb_hiwat = cc;
sb->sb_mbmax = min(cc * 2, sb_max);