===== net/ipv4/netfilter/ip_conntrack_amanda.c 1.10 vs edited ===== --- 1.10/net/ipv4/netfilter/ip_conntrack_amanda.c 2004-08-19 02:14:53 +02:00 +++ edited/net/ipv4/netfilter/ip_conntrack_amanda.c 2004-11-05 17:32:04 +01:00 @@ -49,9 +49,10 @@ { struct ip_conntrack_expect *exp; struct ip_ct_amanda_expect *exp_amanda_info; - char *amp, *data, *data_limit, *tmp; + char *amp, *data, *tmp; unsigned int dataoff, i; u_int16_t port, len; + int found = 0; /* Only look at packets from the Amanda server */ if (CTINFO2DIR(ctinfo) == IP_CT_DIR_ORIGINAL) @@ -74,12 +75,17 @@ skb->len - dataoff, amanda_buffer); BUG_ON(amp == NULL); data = amp; - data_limit = amp + skb->len - dataoff; - *data_limit = '\0'; /* Search for the CONNECT string */ - data = strstr(data, "CONNECT "); - if (!data) + while((data = memchr(data, 'C', skb->len - dataoff)) != NULL) { + if (strncmp(data, "CONNECT ", 8) == 0) { + found = 1; + break; + } + data++; + } + + if (!found) goto out; data += strlen("CONNECT ");