[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ください。