2008/6/23 Pablo Neira Ayuso <pablo@xxxxxxxxxxxxx>: > Patrick McHardy wrote: >> Joonwoo Park wrote: >>> 2008/6/21 Patrick McHardy <kaber@xxxxxxxxx>: >>>>> +static void compute_prefix_tbl(struct ts_bm *bm, u8 icase) >>>>> { >>>>> int i, j, g; >>>>> for (i = 0; i < ASIZE; i++) >>>>> bm->bad_shift[i] = bm->patlen; >>>>> - for (i = 0; i < bm->patlen - 1; i++) >>>>> + for (i = 0; i < bm->patlen - 1; i++) { >>>>> bm->bad_shift[bm->pattern[i]] = bm->patlen - 1 - i; >>>>> + if (icase) >>>>> + bm->bad_shift[tolower(bm->pattern[i])] >>>>> + = bm->patlen - 1 - i; >>>>> + } >>>> You use toupper() above and tolower() here, is that correct? >>>> >>> >>> It should be, bm->pattern's characters are all upper case since It was >>> altered before. >>> So we should use toupper() for target string character to compare. >>> And to ignore case, we should prepare one more bad_shift array >>> calculation, opposite tolower() should be used for it. >> >> OK thanks. I'll wait for an ACK from Thomas before applying >> them though. > > This is rather confusing. Why not set both the pattern and the bad_shift > to lower or upper case? > To be honest, pattern can be set to lower or upper case, it doesn't matter. But for bad_shift, we should add one more array for diffrence of case. So bad_shift array should have both of lower and upper. >>>>> + for (i = 0; i < bm->patlen - 1; i++) { >>>>> bm->bad_shift[bm->pattern[i]] = bm->patlen - 1 - i; Therefore, at here, this makes bad_shift for upper case, >>>>> + if (icase) >>>>> + bm->bad_shift[tolower(bm->pattern[i])] >>>>> + = bm->patlen - 1 - i; At here, this makes bad_shift for lower case. -- To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html