[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