doc/share/security/patches/SA-02:21/tcpip.patch
Bjoern A. Zeeb 3571e53040 Import FreeBSD Security Advisories and Errata Notices, as well as their
patches for easier mirroring, to eliminate a special copy, to make
www.freebsd.org/security a full copy of security.freebsd.org and be
eventually be the same.

For now files are just sitting there.   The symlinks are missing.

Discussed on:	www (repository location)
Discussed with:	simon (so)
2012-08-15 06:19:40 +00:00

82 lines
2.3 KiB
Diff

Index: sys/netinet/ip_icmp.c
diff -u sys/netinet/ip_icmp.c:1.39.2.14 sys/netinet/ip_icmp.c:1.39.2.14.2.1
--- sys/netinet/ip_icmp.c:1.39.2.14 Mon Jan 14 01:54:35 2002
+++ sys/netinet/ip_icmp.c Mon Apr 15 12:12:05 2002
@@ -615,6 +615,8 @@
}
t = ip->ip_dst;
ip->ip_dst = ip->ip_src;
+ ro = &rt;
+ bzero(ro, sizeof(*ro));
/*
* If the incoming packet was addressed directly to us,
* use dst as the src for the reply. Otherwise (broadcast
@@ -635,8 +637,6 @@
goto match;
}
}
- ro = &rt;
- bzero(ro, sizeof(*ro));
ia = ip_rtaddr(ip->ip_dst, ro);
/* We need a route to do anything useful. */
if (ia == NULL) {
Index: sys/netinet/ip_mroute.c
diff -u sys/netinet/ip_mroute.c:1.56.2.3 sys/netinet/ip_mroute.c:1.56.2.3.2.1
--- sys/netinet/ip_mroute.c:1.56.2.3 Fri Dec 7 03:23:11 2001
+++ sys/netinet/ip_mroute.c Mon Apr 15 12:12:05 2002
@@ -1890,6 +1890,7 @@
{
struct ip_moptions imo;
int error;
+ static struct route ro;
int s = splnet();
if (vifp->v_flags & VIFF_TUNNEL) {
@@ -1908,7 +1909,7 @@
* should get rejected because they appear to come from
* the loopback interface, thus preventing looping.
*/
- error = ip_output(m, (struct mbuf *)0, NULL,
+ error = ip_output(m, (struct mbuf *)0, &ro,
IP_FORWARDING, &imo);
if (mrtdebug & DEBUG_XMIT)
Index: sys/netinet/ip_output.c
diff -u sys/netinet/ip_output.c:1.99.2.24 sys/netinet/ip_output.c:1.99.2.24.2.1
--- sys/netinet/ip_output.c:1.99.2.24 Fri Dec 28 04:08:33 2001
+++ sys/netinet/ip_output.c Mon Apr 15 12:12:05 2002
@@ -124,11 +124,11 @@
struct mbuf *m = m0;
int hlen = sizeof (struct ip);
int len, off, error = 0;
- struct route iproute;
struct sockaddr_in *dst;
struct in_ifaddr *ia = NULL;
int isbroadcast, sw_csum;
#ifdef IPSEC
+ struct route iproute;
struct socket *so = NULL;
struct secpolicy *sp = NULL;
#endif
@@ -185,6 +185,9 @@
#ifdef DIAGNOSTIC
if ((m->m_flags & M_PKTHDR) == 0)
panic("ip_output no HDR");
+ if (!ro)
+ panic("ip_output no route, proto = %d",
+ mtod(m, struct ip *)->ip_p);
#endif
if (opt) {
m = ip_insertoptions(m, opt, &len);
@@ -207,11 +210,6 @@
hlen = IP_VHL_HL(ip->ip_vhl) << 2;
}
- /* Route packet. */
- if (ro == NULL) {
- ro = &iproute;
- bzero(ro, sizeof(*ro));
- }
dst = (struct sockaddr_in *)&ro->ro_dst;
/*
* If there is a cached route,