diff options
author | Jun-ichiro itojun Hagino <itojun@cvs.openbsd.org> | 2002-12-31 02:30:11 +0000 |
---|---|---|
committer | Jun-ichiro itojun Hagino <itojun@cvs.openbsd.org> | 2002-12-31 02:30:11 +0000 |
commit | f83d346180e68c0e4d806034fd0ec9ff39fb3f2b (patch) | |
tree | c67588c652bd6b4199ba99f1bd3cb28d265769a8 | |
parent | 0ad0078865f5403ae40163b31034a1996a11fb23 (diff) |
don't overrun user-supplied buffer. from jinmei@kame, deraadt ok
-rw-r--r-- | sys/net/rtsock.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/net/rtsock.c b/sys/net/rtsock.c index 79c12d624e6..03c5192ef65 100644 --- a/sys/net/rtsock.c +++ b/sys/net/rtsock.c @@ -1,4 +1,4 @@ -/* $OpenBSD: rtsock.c,v 1.24 2002/07/17 14:20:19 art Exp $ */ +/* $OpenBSD: rtsock.c,v 1.25 2002/12/31 02:30:10 itojun Exp $ */ /* $NetBSD: rtsock.c,v 1.18 1996/03/29 00:32:10 cgd Exp $ */ /* @@ -783,7 +783,7 @@ sysctl_dumpentry(rn, v) brdaddr = rt->rt_ifa->ifa_dstaddr; } size = rt_msg2(RTM_GET, &info, 0, w); - if (w->w_where && w->w_tmem) { + if (w->w_where && w->w_tmem && w->w_needed <= 0) { register struct rt_msghdr *rtm = (struct rt_msghdr *)w->w_tmem; rtm->rtm_flags = rt->rt_flags; @@ -820,7 +820,7 @@ sysctl_iflist(af, w) ifpaddr = ifa->ifa_addr; len = rt_msg2(RTM_IFINFO, &info, (caddr_t)0, w); ifpaddr = 0; - if (w->w_where && w->w_tmem) { + if (w->w_where && w->w_tmem && w->w_needed <= 0) { register struct if_msghdr *ifm; ifm = (struct if_msghdr *)w->w_tmem; @@ -841,7 +841,7 @@ sysctl_iflist(af, w) netmask = ifa->ifa_netmask; brdaddr = ifa->ifa_dstaddr; len = rt_msg2(RTM_NEWADDR, &info, 0, w); - if (w->w_where && w->w_tmem) { + if (w->w_where && w->w_tmem && w->w_needed <= 0) { register struct ifa_msghdr *ifam; ifam = (struct ifa_msghdr *)w->w_tmem; |