[hunspell-fi-devel] libvoikko - Mahdollinen bugi, osoittimen käyttö free:n jälkeen

Reijo Tomperi reijo.tomperi at pp2.inet.fi
Sun Apr 23 23:01:32 EEST 2006


libvoikko-0.2 kirjastossa, tiedostossa voikko_spell.c:36 käytetään 
buffer-osoitinta, vaikka minun nähdäkseni muistialue johon osoitin 
osoittaa, vapautettiin jo muutamaa riviä aikaisemmin. 
voikko_options.ignore_dot on ilmeisesti toistaiseksi aina false, joten 
tuo ehto ei yleensä toteudu. Mutta ajattelin huomauttaa tuosta silti jos 
se vaatii korjaamista jonkun mielestä. Patchia en osaa tehdä, kun en 
vielä ymmärrä täysin funktion toimintaa enkä ole varma onko 
tarkoituksena käyttää alkuperäistä buffer:ia, vai jotain muuta arvoa siinä.

int voikko_do_spell(const char * word) {
    char * buffer = malloc(strlen(word) + 1);
    strcpy(buffer, word);
    analyse_item(buffer, MORPHOLOGY);
    free(buffer);  // <-- Muisti vapautetaan tässä
    if (first_analysis_result()) return VOIKKO_SPELL_OK;
    if (voikko_options.ignore_dot && strlen(word) > 1 && 
word[strlen(word) - 1] == '.') {
        buffer[strlen(word) - 1] = '\0';  // <-- Mutta sitä käytetään 
vielä täällä
        analyse_item(buffer, MORPHOLOGY); // <-- Ja täällä
        if (first_analysis_result()) return VOIKKO_SPELL_OK;
    }
    return VOIKKO_SPELL_FAILED;
}



More information about the devel mailing list