[PHP-users 9912] Re: PHP 4.2.3で4 バイト以下の配列の変数値が取れない(WIN環境)

Sakamoto php-users@php.gr.jp
Mon, 9 Sep 2002 04:51:45 +0900


RisaPaPa(坂本)です。

Win2000Server/APACHE2.0.40/PHP-4.2.3環境でも
php_mbstring.dllをロードしてテストしてみたら4バイト行方不明に
なりました。私の場合は以前のバージョンであまり問題にならなかった
PHP-4.1.2のソースを参考にしてPHP4.2.2と比較しみたら同じで
PHP-4.2.3から変更されていたので下の部分を切り取っり同じところに
貼り付けてから以前の状態に戻してコンパイルしました。
そしたらWin環境では問題はなくなりました。

<切り取って貼り付けた部分>

 /* split and decode the query */
 n = 0;
 strtok_buf = NULL;
 var = php_strtok_r(res, separator, &strtok_buf);
 while (var && n < num) {
  val = strchr(var, '=');
  if (val) { /* have a value */
   *val++ = '\0';
   val_list[n] = var;
   len_list[n] = php_url_decode(var, strlen(var));
   n++;
   val_list[n] = val;
   len_list[n] = php_url_decode(val, strlen(val));
  } else {
   val_list[n] = var;
   len_list[n] = php_url_decode(var, strlen(var));
   n++;
   val_list[n] = NULL;
   len_list[n] = 0;
  }
  n++;
  var = php_strtok_r(NULL, separator, &strtok_buf);
 }
 num = n; /* make sure to process initilized vars only */

 /* initialize converter */

<テストサイト>
臨時テストですので今日の午後まで立ち上げておきます。
http://ringring.dip.jp/

CGIテスト(FASTCGIでテストしていますが入出力はCGIと同じです。)
http://ringring.dip.jp/info.fastcgi_php?test[1]=123456
http://ringring.dip.jp/test.fastcgi_php
MOD_PHPテスト
http://ringring.dip.jp/info.mod_php?test[1]=123456
http://ringring.dip.jp/test.mod_php

<Windowバージョンphp_mbstring.dllダウンロード>
php_mbregex.c, mbregex.c ファイルをプロジェクトファイルに
追加し、オプション /D HAVE_MBREGEX=1を追加して
コンパイルしたものです。問題なければどなたか配布してください。
臨時テストサイトなので今日の午後閉鎖します。

http://ringring.dip.jp/php_mbstring.dll


----- Original Message -----
From: "Moriyoshi Koizumi" <readjust@deneb.freemail.ne.jp>
To: <php-users@php.gr.jp>
Sent: Sunday, September 08, 2002 7:04 AM
Subject: [PHP-users 9904] Re: PHP 4.2.3で4 バイト以下の配列の変数値が取れな
い


> 小泉@町田です。
>
> きしださん、藤本さん報告ありがとうございました。
> 確かにパッチに不具合がありました。またその原因も判明しました。
>
> mbstring.input_encoding が pass でないときに、
> クエリー文字列が処理されないことがあったり、
> レスポンスに妙に時間がかかったり、ランダムなタイミングで、
> バッファーオーバランを起こし、segmentation fault が発生することがありま
す。
>
> ただし、読み込み保護領域に対するread オペレーションで起こる例外
> でしたので、もし私のパッチを適用してあった場合でも、
> 何らかの攻撃に利用される可能性は低いはずです。
>
> 新しいパッチは、php-dev@php.gr.jp の方には流しましたが、
> こちらのMLには、もうすこし寝かせてから流すことにします。
>
> 混乱させてすいませんでした。
>
> _______________________________________________
> PHP-users mailing list
> PHP-users@php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users
>