[PHP-users 9892] Re: PHP 4.2.3で4 バイト以下の配列の変数値が取れない
Yasuo Ohgaki
php-users@php.gr.jp
Sat, 07 Sep 2002 18:22:22 +0900
大垣です。
さっきの今で作ったパッチなので明らかにテスト不足ですが
現象からするとこのパッチで解決のはずです。
問題がある場合はメールをください。
# ここは変更された部分ではないので、どこかで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ください。