summaryrefslogtreecommitdiff
path: root/sys/netinet/ip_input.c
diff options
context:
space:
mode:
authorsommerfeld <sommerfeld@NetBSD.org>2000-05-06 16:35:14 +0000
committersommerfeld <sommerfeld@NetBSD.org>2000-05-06 16:35:14 +0000
commit90f481ef3fda84398c29a71df72de435881bfa2e (patch)
tree3e9583aa7008844bf3ce2644b32f17855167e3ba /sys/netinet/ip_input.c
parentcbc0b13fa7ab46d3daded5f05f763d024e275c32 (diff)
Handle large offsets with very small options correctly.
Diffstat (limited to 'sys/netinet/ip_input.c')
-rw-r--r--sys/netinet/ip_input.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/netinet/ip_input.c b/sys/netinet/ip_input.c
index 8e3e3dad8f8..49e97511ec0 100644
--- a/sys/netinet/ip_input.c
+++ b/sys/netinet/ip_input.c
@@ -1,4 +1,4 @@
-/* $NetBSD: ip_input.c,v 1.111 2000/03/31 14:27:17 jdolecek Exp $ */
+/* $NetBSD: ip_input.c,v 1.112 2000/05/06 16:35:14 sommerfeld Exp $ */
/*
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -1013,7 +1013,7 @@ ip_dooptions(m)
break;
}
off--; /* 0 origin */
- if (off > optlen - sizeof(struct in_addr)) {
+ if ((off + sizeof(struct in_addr)) > optlen) {
/*
* End of source route. Should be for us.
*/
@@ -1053,7 +1053,7 @@ ip_dooptions(m)
* If no space remains, ignore.
*/
off--; /* 0 origin */
- if (off > optlen - sizeof(struct in_addr))
+ if ((off + sizeof(struct in_addr)) > optlen)
break;
bcopy((caddr_t)(&ip->ip_dst), (caddr_t)&ipaddr.sin_addr,
sizeof(ipaddr.sin_addr));