[NET]: skb_find_text ignores to argument
authorPhil Oester <kernel@linuxace.com>
Mon, 26 Jun 2006 07:00:57 +0000 (00:00 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 26 Jun 2006 07:00:57 +0000 (00:00 -0700)
skb_find_text takes a "to" argument which is supposed to limit how
far into the skb it will search for the given text.  At present,
it seems to ignore that argument on the first skb, and instead
return a match even if the text occurs beyond the limit.

Patch below fixes this, after adjusting for the "from" starting
point.  This consequently fixes the netfilter string match's "--to"
handling, which currently is broken.

Signed-off-by: Phil Oester <kernel@linuxace.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/skbuff.c

index 8e5044ba3ab68b836fcb1cfdb35c56ce1790f9b9..6edbb90cbcec303605be4064b2f1da0d56e18eb3 100644 (file)
@@ -1739,12 +1739,15 @@ unsigned int skb_find_text(struct sk_buff *skb, unsigned int from,
                           unsigned int to, struct ts_config *config,
                           struct ts_state *state)
 {
+       unsigned int ret;
+
        config->get_next_block = skb_ts_get_next_block;
        config->finish = skb_ts_finish;
 
        skb_prepare_seq_read(skb, from, to, TS_SKB_CB(state));
 
-       return textsearch_find(config, state);
+       ret = textsearch_find(config, state);
+       return (ret <= to - from ? ret : UINT_MAX);
 }
 
 /**