Namazu-devel-ja(旧)


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

Re: Subject field search bug when NULL character is contained



>> On Wed, 24 Dec 2003 14:06:42 +0900
>> 「土」== tsuchiya@xxxxxxxxxxxxxxxxxxxxxxx (TSUCHIYA Masatoshi) said as follows:

土> (1) 1行を読み込むことに失敗しているかどうかを判定する部分を頑健にする.
土> (1.1) 末尾に添付したパッチを適用する(かえって脆弱かも)

よく見直してみると,添付のパッチには,きっかり BUFSIZE - 2 文字だけか
らなる表題の場合に,fgets に失敗したと見なしてしまうという問題があるこ
とに気付きました.

対策としては,

  (1.1.1) 最初から BUFSIZE を1文字増やしておく
  (1.1.2) buf[BUFSIZE - 2] == '\n' の場合は成功と見なすようにする

が考えられますが,やはり根本的には

土> (1.2) fgets() の代わりに,取得された文字列数が分かる getline() 関
土> 数を使う.

がいいのかなあ,と思います.

-- 
土屋 雅稔 ( TSUCHIYA Masatoshi )

--- nmz/re.c.ORIG	2001-12-21 14:36:40.000000000 +0900
+++ nmz/re.c	2003-12-24 13:46:39.000000000 +0900
@@ -100,7 +100,7 @@
     nmz_re_compile_pattern(tmpexpr, strlen(tmpexpr), rp);
 
     for (i = n = 0; fgets(buf, BUFSIZE - 1, fp); i++) {
-        if (buf[strlen(buf) - 1] != '\n') {  /* too long */
+        if ((strlen(buf) == (BUFSIZE - 1)) && (buf[BUFSIZE - 2] != '\n')) {  /* too long */
             i--;
             continue;
         }