diff options
| author | sommerfeld <sommerfeld@NetBSD.org> | 2000-05-06 16:35:14 +0000 |
|---|---|---|
| committer | sommerfeld <sommerfeld@NetBSD.org> | 2000-05-06 16:35:14 +0000 |
| commit | 90f481ef3fda84398c29a71df72de435881bfa2e (patch) | |
| tree | 3e9583aa7008844bf3ce2644b32f17855167e3ba /sys/netinet/ip_input.c | |
| parent | cbc0b13fa7ab46d3daded5f05f763d024e275c32 (diff) | |
Handle large offsets with very small options correctly.
Diffstat (limited to 'sys/netinet/ip_input.c')
| -rw-r--r-- | sys/netinet/ip_input.c | 6 |
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)); |
