diff options
author | 2014-03-13 01:22:54 +0000 | |
---|---|---|
committer | 2014-03-13 01:22:54 +0000 | |
commit | de2dccd628b79960881b5b1ab6ffec8d298be463 (patch) | |
tree | 7b9c10433cb7287689843258d131cb9576817db6 | |
parent | collapse variable declarations (diff) | |
download | wireguard-openbsd-de2dccd628b79960881b5b1ab6ffec8d298be463.tar.xz wireguard-openbsd-de2dccd628b79960881b5b1ab6ffec8d298be463.zip |
fix buffer overflows in icmp redirect handling introduced in rev 1.106
ok mpi@ millert@
-rw-r--r-- | sys/netinet/ip_icmp.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/sys/netinet/ip_icmp.c b/sys/netinet/ip_icmp.c index 3893556f1b8..8efeb55a930 100644 --- a/sys/netinet/ip_icmp.c +++ b/sys/netinet/ip_icmp.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ip_icmp.c,v 1.115 2014/03/11 10:28:55 mpi Exp $ */ +/* $OpenBSD: ip_icmp.c,v 1.116 2014/03/13 01:22:54 jsg Exp $ */ /* $NetBSD: ip_icmp.c,v 1.19 1996/02/13 23:42:22 christos Exp $ */ /* @@ -611,9 +611,12 @@ reflect: memset(&ssrc, 0, sizeof(ssrc)); sdst.sin_family = sgw.sin_family = ssrc.sin_family = AF_INET; sdst.sin_len = sgw.sin_len = ssrc.sin_len = sizeof(sdst); - memcpy(&sdst.sin_addr, &icp->icmp_ip.ip_dst, sizeof(sdst)); - memcpy(&sgw.sin_addr, &icp->icmp_gwaddr, sizeof(sgw)); - memcpy(&ssrc.sin_addr, &ip->ip_src, sizeof(ssrc)); + memcpy(&sdst.sin_addr, &icp->icmp_ip.ip_dst, + sizeof(sdst.sin_addr)); + memcpy(&sgw.sin_addr, &icp->icmp_gwaddr, + sizeof(sgw.sin_addr)); + memcpy(&ssrc.sin_addr, &ip->ip_src, + sizeof(ssrc.sin_addr)); #ifdef ICMPPRINTFS if (icmpprintfs) { |