diff options
Diffstat (limited to 'net/ipv4/udp.c')
-rw-r--r-- | net/ipv4/udp.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index 1ab180bad72a..cc3a0a06c004 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c | |||
@@ -1231,7 +1231,7 @@ int __udp4_lib_rcv(struct sk_buff *skb, struct udp_table *udptable, | |||
1231 | int proto) | 1231 | int proto) |
1232 | { | 1232 | { |
1233 | struct sock *sk; | 1233 | struct sock *sk; |
1234 | struct udphdr *uh = udp_hdr(skb); | 1234 | struct udphdr *uh; |
1235 | unsigned short ulen; | 1235 | unsigned short ulen; |
1236 | struct rtable *rt = (struct rtable*)skb->dst; | 1236 | struct rtable *rt = (struct rtable*)skb->dst; |
1237 | __be32 saddr = ip_hdr(skb)->saddr; | 1237 | __be32 saddr = ip_hdr(skb)->saddr; |
@@ -1244,6 +1244,7 @@ int __udp4_lib_rcv(struct sk_buff *skb, struct udp_table *udptable, | |||
1244 | if (!pskb_may_pull(skb, sizeof(struct udphdr))) | 1244 | if (!pskb_may_pull(skb, sizeof(struct udphdr))) |
1245 | goto drop; /* No space for header. */ | 1245 | goto drop; /* No space for header. */ |
1246 | 1246 | ||
1247 | uh = udp_hdr(skb); | ||
1247 | ulen = ntohs(uh->len); | 1248 | ulen = ntohs(uh->len); |
1248 | if (ulen > skb->len) | 1249 | if (ulen > skb->len) |
1249 | goto short_packet; | 1250 | goto short_packet; |