Simon Josefsson <[email protected]> writes:

> Jon Nelson <[email protected]> writes:
>
>> On or around line 1260 of lib/pr29.c, in the pr29_4 function.
>>
>>   for (i = 0; i < len; i++)
>>     if ((row = first_column (in[i])) > 0)
>>       for (j = i + 1; j < len; j++)
>>     if (combinationclass (in[j]))
>>       for (k = j + 1; k < len; j++)
>>         if (in_last_column_row (in[k], row))
>>           return PR29_PROBLEM;
>>
>> The infinite loop occurs when the character is present in
>> combinationclass but the following character is *not* in
>> in_last_column_row.
>> I believe the "k" loop should be incrementing *k* not *j*.
>
> Thanks for the report, Jon.  Do you have any example input strings that
> trigger this?  I'm sure I can work it out, but if you have them it would
> speed things up.

I was able to reproduce the bug using the string U+1100 U+0300 U+4711.
I agree with your fix, although there may be more problems with that
code.  I'm working on it.

/Simon

_______________________________________________
Help-libidn mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/help-libidn

Reply via email to