[PHP-users 9897] Re: PHP 4.2.3で4バイト以下の配列の変数値が取れない
Moriyoshi Koizumi
php-users@php.gr.jp
Sat, 07 Sep 2002 22:01:38 +0900
小泉@町田です。
もうお気づきのこととは思いますが、そのパッチを適用しても、
$ echo '<?php print_r( $_REQUEST ); ?>' | env QUERY_STRING="abc%3dhoge"
php
とすると、
Array
(
[abc] => hoge
)
となってしまうようです。
通常の使用状況では、問題は起こりえないのですが。
Yasuo Ohgaki <yohgaki@ohgaki.net> wrote:
> 大垣です。
>
> さっきの今で作ったパッチなので明らかにテスト不足ですが
> 現象からするとこのパッチで解決のはずです。
>
> 問題がある場合はメールをください。
>
> # ここは変更された部分ではないので、どこかでURLデコード
> # されていたのが、されなくなった為バグが発生したと考えら
> # れます。
> # 初期化コードがいい加減なのは知っていましたが、そろそろ
> # 本当に修正しないといけないですね...
>
> Yasuo Ohgaki wrote:
> > 大垣です。
> >
> > Y.Nakamura wrote:
> >
> >>皆さんはじめまして。中村と申します。
> >>いつもMLのログをはじめ活用させていただいております。
> >>
> >>自己解決できそうにないので質問させて下さい。
> >>
> >>バージョン4.2.2の環境で実際に動かしながら開発を進めていたのですが、4.2.3
> >>がリリースされたとのことで早速バージョンアップを行ないました。すると以下
> >>のスクリプトで4バイト以下の値が取得できないようになってしまいました。
> >
> >
> > 原因が判りました。
> >
> > URLデコードする前に変数の値の開始位置を取得して、その場所
> > 以降を値として初期化しています。このため、トランケートされた
> > 様になってしまいます。
> >
> > # なぜ、今まで普通に動作していたのか判りませんが...
> >
> > 今晩にでもパッチをポストするので試してみてください。
>
> --- mbstring.c.~1.95.~ Tue Sep 3 19:31:46 2002
> +++ mbstring.c Sat Sep 7 18:13:48 2002
> @@ -1271,9 +1271,9 @@
> strtok_buf = NULL;
> var = php_strtok_r(res, separator, &strtok_buf);
> while (var) {
> + len_list[n] = php_url_decode(var, strlen(var));
> val = strchr(var, '=');
> val_list[n] = var;
> - len_list[n] = php_url_decode(var, strlen(var));
> n++;
> if (val) { /* have a value */
> *val++ = '\0';
>
> --
> Yasuo Ohgaki
> 9/14高松でオフ会しましょう。参加者募集中!DMください。
>
>
> _______________________________________________
> PHP-users mailing list
> PHP-users@php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users