Index: [Article Count Order] [Thread]

Date:  Thu, 14 Jun 2001 20:07:17 +0900
From:  aito@ei5sun.yz.yamagata-u.ac.jp
Subject:  [w3m-dev 02066] mime header decode
To:  w3m-dev@mi.med.tohoku.ac.jp
Message-Id:  <200106141107.HAA06955@ei5hp710.yz.yamagata-u.ac.jp>
X-Mail-Count: 02066

あ伊藤です.ここ1ヶ月ばかり,入試判定ミス関連の仕事しかして
いなくて,当分作業できそうもありません.誰かパッチ集積して
くれるとありがたいなぁ.

ところで,個人宛に,こんなレポートが来ました.
-----------------------------------------------------------
1) 仮想の WWW サーバを用意し、80番ポートへ接続したら、
   "=?AAAAAAAAAAAAAAA...AAA"という文字列を返すようにする。
2) w3m で 1)の WWW サーバ上の HTML ファイルを閲覧する。

上記の検証の結果、1)で返答する文字列中の"A"の数が32個以上
になると、Segmentation Fault が発生します。
-----------------------------------------------------------

mimehead.c で charset 用の文字列に固定長配列を使っている
せいなので,こんな感じでよいかと思います.
--
山形大学工学部 情報科学科  伊藤 彰則
Akinori Ito, Dr.Eng.
Department of Informatics, Faculty of Engineering
Yamagata University
tel&fax: 0238-26-3369   E-mail: aito@eie.yz.yamagata-u.ac.jp

--- mimehead.c.org	Thu Jun 14 19:40:37 2001
+++ mimehead.c	Thu Jun 14 19:46:26 2001
@@ -166,21 +166,21 @@
 Str
 decodeWord(char **ow)
 {
-    char charset[32];
     char *p, *w = *ow;
     char method;
     Str a = Strnew();
+    Str charset = Strnew();
 
     if (*w != '=' || *(w + 1) != '?')
 	goto convert_fail;
     w += 2;
-    for (p = charset; *w != '?'; w++) {
+    for (; *w != '?'; w++) {
 	if (*w == '\0')
 	    goto convert_fail;
-	*(p++) = *w;
+	Strcat_char(charset,*w);
     }
     *p = '\0';
-    if (strcasecmp(charset, J_CHARSET) != 0) {
+    if (Strcasecmp_charp(charset, J_CHARSET) != 0) {
 	/* NOT ISO-2022-JP encoding ... don't convert */
 	goto convert_fail;
     }
    

[Next]