mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-04 05:37:36 +00:00
[UDP]: Fix length check.
Rémi Denis-Courmont wrote: > Right. By the way, shouldn't "len" rather be signed in there? > > unsigned int len; > > /* if we're overly short, let UDP handle it */ > len = skb->len - sizeof(struct udphdr); > if (len <= 0) > goto udp; It should, but the < 0 case can't happen since __udp4_lib_rcv already makes sure that we have at least a complete UDP header. Anyways, this patch fixes it. Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
dffe4f048b
commit
3be550f34b
1 changed files with 2 additions and 7 deletions
|
@ -951,14 +951,10 @@ int udp_queue_rcv_skb(struct sock * sk, struct sk_buff *skb)
|
||||||
* >0 if skb should be passed on to UDP.
|
* >0 if skb should be passed on to UDP.
|
||||||
* <0 if skb should be resubmitted as proto -N
|
* <0 if skb should be resubmitted as proto -N
|
||||||
*/
|
*/
|
||||||
unsigned int len;
|
|
||||||
|
|
||||||
/* if we're overly short, let UDP handle it */
|
/* if we're overly short, let UDP handle it */
|
||||||
len = skb->len - sizeof(struct udphdr);
|
if (skb->len > sizeof(struct udphdr) &&
|
||||||
if (len <= 0)
|
up->encap_rcv != NULL) {
|
||||||
goto udp;
|
|
||||||
|
|
||||||
if (up->encap_rcv != NULL) {
|
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
ret = (*up->encap_rcv)(sk, skb);
|
ret = (*up->encap_rcv)(sk, skb);
|
||||||
|
@ -971,7 +967,6 @@ int udp_queue_rcv_skb(struct sock * sk, struct sk_buff *skb)
|
||||||
/* FALLTHROUGH -- it's a UDP Packet */
|
/* FALLTHROUGH -- it's a UDP Packet */
|
||||||
}
|
}
|
||||||
|
|
||||||
udp:
|
|
||||||
/*
|
/*
|
||||||
* UDP-Lite specific tests, ignored on UDP sockets
|
* UDP-Lite specific tests, ignored on UDP sockets
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Add table
Reference in a new issue