diff options
author | Claudio Jeker <claudio@cvs.openbsd.org> | 2015-02-11 05:58:58 +0000 |
---|---|---|
committer | Claudio Jeker <claudio@cvs.openbsd.org> | 2015-02-11 05:58:58 +0000 |
commit | 244df2ab7375680c3e35a304643ecd6f95f1860c (patch) | |
tree | f1058e266ed43cc9dc6b692af77e2a4496eef77f /usr.sbin/dvmrpd | |
parent | 694d8f61bd5b3eae7d0cd268698186472d43f7fa (diff) |
Use sizeof(u_short) in the first check since there are RT messages that
are less then sizeof(*rtm) bytes long (e.g. interface announcements).
Found the hard way by phessler@
Diffstat (limited to 'usr.sbin/dvmrpd')
-rw-r--r-- | usr.sbin/dvmrpd/kroute.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/usr.sbin/dvmrpd/kroute.c b/usr.sbin/dvmrpd/kroute.c index 07068d2723e..39faa9255e6 100644 --- a/usr.sbin/dvmrpd/kroute.c +++ b/usr.sbin/dvmrpd/kroute.c @@ -1,4 +1,4 @@ -/* $OpenBSD: kroute.c,v 1.10 2015/02/10 08:49:30 claudio Exp $ */ +/* $OpenBSD: kroute.c,v 1.11 2015/02/11 05:56:27 claudio Exp $ */ /* * Copyright (c) 2004 Esben Norby <norby@openbsd.org> @@ -389,7 +389,7 @@ kr_dispatch_msg(int fd, short event, void *bula) lim = buf + n; for (next = buf; next < lim; next += rtm->rtm_msglen) { rtm = (struct rt_msghdr *)next; - if (lim < next + sizeof(*rtm) || + if (lim < next + sizeof(u_short) || lim < next + rtm->rtm_msglen) fatalx("dispatch_rtmsg: partial rtm in buffer"); if (rtm->rtm_version != RTM_VERSION) |