• Tom Lane's avatar
    Fix not-terribly-safe coding in NIImportOOAffixes() and NIImportAffixes(). · b3e05097
    Tom Lane authored
    There were two places in spell.c that supposed that they could search
    for a location in a string produced by lowerstr() and then transpose
    the offset into the original string.  But this fails completely if
    lowerstr() transforms any characters into characters of different byte
    length, as can happen in Turkish UTF8 for instance.
    
    We'd added some comments about this coding in commit 51e78ab4,
    but failed to realize that it was not merely confusing but wrong.
    
    Coverity complained about this code years ago, but in such an opaque
    fashion that nobody understood what it was on about.  I'm not entirely
    sure that this issue *is* what it's on about, actually, but perhaps
    this patch will shut it up -- and in any case the problem is clear.
    
    Back-patch to all supported branches.
    b3e05097
spell.c 56.3 KB