[IPV4]: ip_route_input panic fix (CVE-2006-1525)
Linux Kernel Mailing List <[email protected]> Tue, 13 Jun 2006 19:59:10 GMT
| Newsgroups | gmane.linux.kernel.commits.2-4 |
|---|---|
| Message-ID | <[email protected]> |
commit 4ff1c7d9b24059c758ed4600f35da71a0b11557a tree d899f9983c5500765b677d419657a75d88fdad40 parent 3bbf58a7d45e5b50d70215c5894aa0438a8f831d author Stephen Hemminger <[email protected]> Mon, 29 May 2006 13:27:17 -0700 committer David S. Miller <[email protected]> Mon, 29 May 2006 13:27:17 -0700 [IPV4]: ip_route_input panic fix (CVE-2006-1525) This fixes http://bugzilla.kernel.org/show_bug.cgi?id=6388 The bug is caused by ip_route_input dereferencing skb->nh.protocol of the dummy skb passed dow from inet_rtm_getroute (Thanks Thomas for seeing it). It only happens if the route requested is for a multicast IP address. Signed-off-by: Stephen Hemminger <[email protected]> Signed-off-by: David S. Miller <[email protected]> net/ipv4/route.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletion(-) diff --git a/net/ipv4/route.c b/net/ipv4/route.c index 81e98dc..c125592 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c @@ -2214,7 +2214,10 @@ int inet_rtm_getroute(struct sk_buff *in /* Reserve room for dummy headers, this skb can pass through good chunk of routing engine. */ - skb->mac.raw = skb->data; + skb->mac.raw = skb->nh.raw = skb->data; + + /* Bugfix: need to give ip_route_input enough of an IP header to not gag. */ + skb->nh.iph->protocol = IPPROTO_ICMP; skb_reserve(skb, MAX_HEADER + sizeof(struct iphdr)); if (rta[RTA_SRC - 1])