X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=net%2Fcore%2Ffilter.c;h=f3b88205ace2151167bb85d15b6b23d5373a97a7;hb=c7b5ebbddf7bcd3651947760f423e3783bbe6573;hp=9c2a950807689d0fe3053cef237e7c096a59b7c7;hpb=5273a3df6485dc2ad6aa7ddd441b9a21970f003b;p=linux-2.6.git diff --git a/net/core/filter.c b/net/core/filter.c index 9c2a95080..f3b88205a 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -183,9 +183,10 @@ int sk_run_filter(struct sk_buff *skb, struct sock_filter *filter, int flen) continue; } } else { - u32 tmp; - if (!skb_copy_bits(skb, k, &tmp, 4)) { - A = ntohl(tmp); + u32 _tmp, *p; + p = skb_header_pointer(skb, k, 4, &_tmp); + if (p != NULL) { + A = ntohl(*p); continue; } } @@ -208,9 +209,10 @@ int sk_run_filter(struct sk_buff *skb, struct sock_filter *filter, int flen) continue; } } else { - u16 tmp; - if (!skb_copy_bits(skb, k, &tmp, 2)) { - A = ntohs(tmp); + u16 _tmp, *p; + p = skb_header_pointer(skb, k, 2, &_tmp); + if (p != NULL) { + A = ntohs(*p); continue; } } @@ -233,9 +235,10 @@ load_b: continue; } } else { - u8 tmp; - if (!skb_copy_bits(skb, k, &tmp, 1)) { - A = tmp; + u8 _tmp, *p; + p = skb_header_pointer(skb, k, 1, &_tmp); + if (p != NULL) { + A = *p; continue; } }