2004-12-17 の変更点
#author("2017-11-20T22:37:05+09:00","default:admin","admin")
**&tag(Devel);PHP4.3.10でエラー [#ia9ddae47]
PukiWikiのエラーログ(([[PukiWiki-dev:PukiWiki/1.4/ちょっと便利に/エラーログをファイルに出力]]))が半日で30MByteになってました (^^;~
エラー
unpack(): Type H: outside of string on /var/www/html/lib/func.php line 298
該当箇所
// ページ名のエンコード
function encode($key)
{
return ($key == '') ? '' : strtoupper(join('', unpack('H*0', $key)));
}
pack.cの4.3.9→4.3.10のdiffを取ってみると下記のような箇所があり、ここでinputposが-1になっているため、エラーが出ているみたいです。
@@ -820,6 +832,10 @@
}
inputpos += size;
+ if (inputpos < 0) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Type %c: outside of string", type);
+ inputpos = 0;
+ }
} else if (arg < 0) {
/* Reached end of input for '*' repeater */
break;
運用上は特に問題ないみたいなので、php_error_docrefの行をコメントアウトしちゃいました (^^; (ダメ人間)
~
追記(04/12/22):[[PHP 4.3.10 Release Announcement>http://jp2.php.net/release_4_3_10.php]]
のCAN-2004-1018が原因で修正された箇所かも。~
関連:[[SecuriTeam.com ™ (Multiple Vulnerabilities within PHP 4/5 (pack, unpack, safe_mode_exec_dir, safe_mode, realpath, unserialize))>http://www.securiteam.com/unixfocus/6W00F1PC0E.html]]~
~
追記(04/12/30):[[PukiWiki-dev:BugTrack/767]]で検討中の模様。
~
こんな感じに対処するようにとのことです。CVS版は修正済み。
--- func.php.orig 2004-08-07 00:39:52.000000000 +0900
+++ func.php 2004-12-30 16:47:06.000000000 +0900
@@ -243,7 +243,7 @@
// ページ名のエンコード
function encode($key)
{
- return ($key == '') ? '' : strtoupper(join('', unpack('H*0', $key)));
+ return ($key == '') ? '' : strtoupper(bin2hex($key));
}
// ページ名のデコード
#blognavi(Blog)
-- (反応はや!) &br;
RIGHT:&size(10){Posted by henoheno at 2004-12-30 (木) 14:05 };
-えへへ。年末暇なもんで :D &br;
RIGHT:&size(10){Posted by でぃあばぁ at 2004-12-30 (木) 16:27 };
RIGHT:&size(10){Posted by きゅーこん at 2004-12-30 (木) 16:27 };