エラーメッセージ用の定数 xxx_USAGE の中にエスケープされていないものがある †
- ページ: BugTrack2
- 投稿者: 名無しさん
- 優先順位: 重要
- 状態: 提案
- カテゴリー: 本体バグ
- 投稿日: 2007-11-10 (土) 13:20:55
- バージョン:
メッセージ †
プラグインでエラーの発生時にUSAGE を返すものがありますが、& とエスケープせずに&をそのまま使っている物があります。
cvs:plugin/color.inc.php (1.22)
define('PLUGIN_COLOR_USAGE', '&color(foreground[,background]){text};');
cvs:plugin/edit.inc.php (1.46)
function plugin_edit_inline()
{
static $usage = '&edit(pagename#anchor[[,noicon],nolabel])[{label}];';
cvs:plugin/ruby.inc.php (1.6)
define('PLUGIN_RUBY_USAGE', '&ruby(pronunciation){words};');
cvs:plugin/size.inc.php (1.10)
define('PLUGIN_SIZE_USAGE', '&size(px){Text you want to change};');
追伸: edit.inc.php は、ついでにBugTrack2/260の件もお願いします。
- チェックありがとうございます。それぞれ修正 + αしておきました。可能な範囲でご確認をお願いします。 -- henoheno
- size.inc.php (1.11) にちょっとした不具合があります。正規表現パターンが、
define('PLUGIN_SIZE_REGEX', '/^(?:([0-9]+(?:px)?)|([0-9]+)%)$/i');
となっていて、キャプチャする内容に'px' を含めているので、
&size(12px){word}; と書いた時の出力が、'<span style="font-size:12pxpx;...(省略)' とpx が2重に出力されてしまいます。 --
- 確認ありがとうございます。こんなんでいかがでしょうか。別件で、考慮し忘れていたintval()なども追加し、もう少々柔らかくしてみました -- henoheno
- え~と、またsize プラグインの正規表現に疑問が・・・。
define('PLUGIN_SIZE_REGEX',
'/^(?:' .
'([0-9]+(?:\.[0-9]+)?)(?: *px)?' . '|' . // Pixel (default)
'([0-9.]+(?:\.[0-9]+)?) *%' . // Percentage
')$/i');
パーセントの部分が「0~9 か.(ピリオド)が1つ以上続いた後に・・・」となっているので、&size(120.45.87..01%){word}; とピリオドをいくつ書いてもOK になっています。
intval() しているので、たいした問題では無いかもしれませんが。 --
- たびたびレビューいただきありがとうございます。それはピリオドの入力を認めるコードを遷移させていた時の名残です。(?:\.[0-9]+)? に集中していて左側を見ていませんでした。比較対照しやすい形に直しておいて良かった (^^; -- henoheno
- (大文字小文字無視の)USAGE でしか検索してなかったので、見逃してた分を挙げます。 --
2007-11-16 (金) 00:00:00 のCVS版
plugin\counter.inc.php(31): return '&counter([total|today|yesterday]);';
plugin\dump.inc.php(85): $msg = 'dump & restore';
plugin\new.inc.php(35): if (func_num_args() > 2) return '&new([nodate]){date};';
plugin\new.inc.php(39): if ($timestamp === -1) return '&new([nodate]){date}: Invalid date string;';
plugin\new.inc.php(63): return '&new(pagename/[,nolink]): No such pages;';
plugin\new.inc.php(70): return '&new(pagename[,nolink]): No such page;';
plugin\newpage.inc.php(54): '?cmd=read&page=' . $r_page . '&refer=' . $r_refer);
plugin\online.inc.php(58): $error = '&online: ' . $error . ';';
- dump, newpage プラグインは、BugTrack2/260 も・・・(略) --
- 修正(header() などは生データを扱うので、変換すると正しい場所に飛ばないです・・・) --
- 追加(USAGE ですらないですが、とりあえずココに) --
plugin\spam.inc.php(31): '<a href="'. $script . '&mode=pages' . '">Pages</a>' . "\n"
plugin\spam.inc.php(45): $script = get_script_uri() . '?plugin=spam&mode=pages';