[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[freewnn:00383] I found a bug?



はじめまして いしだ@NEC と申します

早速ですが、先日 FreeBSD 4.0R 上に
FreeWnn-1.1.1-a017.tar.gz をインストールしました
漢字変換などは無事に動いているようなのですが
wnnstat などで接続状況を表示させてみると

  ユーザ名:ホスト名       (ソケットNo.)   環境番号
  :minerva.hml.cl.                (0)             0 1

のようにユーザが出なかったり、おかしくなったりする現象にあいました
ちょっと調べたところ、Wnn/jserver/de.c の gets_cur() で
バッファの長さいっぱいまで文字列を読み込んだ時の
動作がおかしいと思われる箇所が見つかりました
バッファにゴミなどが残っていれば ちゃんと動くと思われますが
0 クリアされていたりするとバッファに読み切れなかった文字列が
残ってしまい、悪さをするようです
getws_cur() にも同様の問題があるようでしたので
これも含めた修正パッチを以下に添付します

もし、私の勘違い、あるいは、既知の問題であれば
無視して下さい

それでは失礼致します
diff -ru FreeWnn-1.1.1-a017/Xsi/Wnn/jserver/de.c FreeWnn-1.1.1-a017.new/Xsi/Wnn/jserver/de.c
--- FreeWnn-1.1.1-a017/Xsi/Wnn/jserver/de.c	Tue Mar 21 01:31:43 2000
+++ FreeWnn-1.1.1-a017.new/Xsi/Wnn/jserver/de.c	Wed May 10 13:28:37 2000
@@ -626,7 +626,7 @@
   while (--buffer_size && (*b = getc_cur ()) != '\0')
     b++;
 
-  if (*b != '\0')
+  if (!buffer_size)
     {
       *b = '\0';
       while (getc_cur () != '\0')
@@ -652,7 +652,7 @@
   while (--buffer_size && (*b = get2_cur ()) != 0)
     b++;
 
-  if (*b != 0)
+  if (!buffer_size)
     {
       *b = 0;
       while (getc_cur () != 0)