From 525e26f77d3d12697d1127cff4ef31f701135c20 Mon Sep 17 00:00:00 2001 From: "David S. Miller" Date: Mon, 29 Sep 2003 13:29:19 -0700 Subject: [PATCH] [IPV4]: Do pskb_may_pull in arp_rcv() not arp_process(). --- net/ipv4/arp.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/net/ipv4/arp.c b/net/ipv4/arp.c index bfe4c406da3ec..ed1a20f7dc6b8 100644 --- a/net/ipv4/arp.c +++ b/net/ipv4/arp.c @@ -630,12 +630,6 @@ int arp_process(struct sk_buff *skb) if (in_dev == NULL) goto out; - /* ARP header, plus 2 device addresses, plus 2 IP addresses. */ - if (!pskb_may_pull(skb, (sizeof(struct arphdr) + - (2 * dev->addr_len) + - (2 * sizeof(u32))))) - goto out; - arp = skb->nh.arph; switch (dev_type) { @@ -837,6 +831,12 @@ int arp_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt) { struct arphdr *arp = skb->nh.arph; + /* ARP header, plus 2 device addresses, plus 2 IP addresses. */ + if (!pskb_may_pull(skb, (sizeof(struct arphdr) + + (2 * dev->addr_len) + + (2 * sizeof(u32))))) + goto freeskb; + if (arp->ar_hln != dev->addr_len || dev->flags & IFF_NOARP || skb->pkt_type == PACKET_OTHERHOST || -- 2.53.0