fenix.ne.jp の G-HAL です。
先に送りましたパッチに書き忘れが1件ありました。
また、先に送りました後に、別の1件のメモリ破壊バグを見つけました。
都合2件分の追加の修正パッチを送付致します。
・ OCHAIRE に特定の学習がある状態で、特定の変換を行うと、
不正なメモリ読み出しが行われる。
→ src-worddic/record.c の trie_find_longest() にて
条件に該当する項目が見つからない時に、
もし条件に該当する項目があると仮定した場合の、
想定される位置の次?の項目が返される事がある模様。
発症例:
次の2件の学習だけがある状態で、「あ」を変換すると、発生する。
ADD "OCHAIRE" S"あああ" N1 N3 S"あ"
ADD "OCHAIRE" S"ああい" N1 N3 S"あ"
発症しうる最も単純な状況を追求した結果、この様な物だった為、
「OCHAIRE に1文節の学習はしない」、「その読みでその変換はしない」、
と言う突っ込みは無しでお願いします。
OCHAIRE 学習されている内容の読みが2文字だと、
アーキテクチャや OS、設定などによっては、問題を検出できません。
また、アーキテクチャや OS、設定などによっては、
OCHAIRE 学習されている内容の読みを5文字なり9文字なりなどにしないと、
問題を検出できないかもしれません。
・ anthy-agent にて、メモリ破壊を起こす事が有る。
→ src-util/input.c にて、free() した後のメモリに書き込みを行っている。
----------------------------------------------------------------
diff -uprN anthy-9100e.debug/src-util/input.c
anthy-9100e.debug2/src-util/input.c
--- anthy-9100e.debug/src-util/input.c 2008-12-05 00:00:00.000000000 +0900
+++ anthy-9100e.debug2/src-util/input.c 2008-12-11 00:00:00.000000000 +0900
@@ -566,12 +566,14 @@ cmd_resize(struct anthy_input_context* i
}
ictx->last_gotten_cand = NTH_UNCONVERTED_CANDIDATE;
- for (as = as->next; as; ) {
- struct a_segment* next;
- next = as->next;
+ as = as->next; /* メモリ破壊の修正 */
+ if (as) {
as->prev->next = NULL;
- free(as);
- as = next;
+ for (; as; ) {
+ struct a_segment* const next = as->next;
+ free(as);
+ as = next;
+ }
}
}
diff -uprN anthy-9100e.debug/src-worddic/record.c
anthy-9100e.debug2/src-worddic/record.c
--- anthy-9100e.debug/src-worddic/record.c 2008-12-05 00:00:00.000000000
+0900
+++ anthy-9100e.debug2/src-worddic/record.c 2008-12-11 00:00:00.000000000
+0900
@@ -743,7 +743,7 @@ do_select_longest_row(struct record_sect
mark = trie_find_longest(&rsc->cols, name);
xs.str = name->str;
- for (i = mark->row.key.len; i > 1; i--) {
+ for (i = (mark->row.key.len <= name->len) ? mark->row.key.len : name->len; i
> 1; i--) { /* 不正なメモリアクセスの修正 */
/* ルートノードは i == 1 でマッチするので除外
* trie_key_nth_bit 参照
*/
----------------------------------------------------------------
================================================================
(Now Printing)
================================================================
_______________________________________________
Anthy-dev mailing list
[email protected]
http://lists.sourceforge.jp/mailman/listinfo/anthy-dev