#freezeを手書きで凍結できてしまう

  • ページ: BugTrack2
  • 投稿者: teanan
  • 優先順位: 緊急
  • 状態: 完了
  • カテゴリー: 本体バグ
  • 投稿日: 2005-02-17 (木) 13:40:32
  • バージョン: 1.4.5

修正

メッセージ

手書きで 「#freeze」 と書いても、そのページは凍結されないように対策されていますが、「#freeze()」と書くとパスワード入力なしで凍結されてしまいます。

preg_replaceの条件がまずいようです。 ご検討をお願いします。

plugin/edit.inc.php: 50,180行目付近
	// 手書きの#freezeを削除
-	$vars['msg'] = preg_replace('/^#freeze\s*$/im', '', $vars['msg']);
+	$vars['msg'] = preg_replace('/^#freeze(?:\(.*\))?[\s;]*/im', '', $vars['msg']);

  • セミコロンはいらなかったか・・・ (^^; -- teanan 2005-02-17 (木) 14:05:04
  • おう、本当に凍結できる (^^; -- henoheno 2005-02-20 (日) 21:28:23
  • cvs:lib/func.php (1.31)
    • is_freeze() を修正しました。この手の行動は予期していたのですが、is_freeze() 側のチェックすべきバイト長が一つ足りておらず、そのためにこれが問題になりえました。これで、今回問題となったパターンが書き込まれていた(ロックされていた)ページが元通りに編集できるようになります。 -- henoheno 2005-02-20 (日) 21:52:07
  • cvs:plugin/edit.inc.php (1.31)
    • teananさんご指摘の部分を整理してコミットしました。これで、今回問題となったパターンが書き込まれることをブロックします。 -- henoheno 2005-02-20 (日) 22:01:34
  • 問題がまだ残っていますので再オープンします。cvs:plugin/edit.inc.php (1.31) の修正では「#freeze#freeze」と編集する操作に対して脆弱なためです。 -- Mizar 2005-03-10 (木) 22:18:06
    @@ -6,7 +6,7 @@
     // cmd=edit
     
     // Remove #freeze written by hand
    -define('PLUGIN_EDIT_FREEZE_REGEX', '/^#freeze(?:\(.*\))?[\s;]*/im');
    +define('PLUGIN_EDIT_FREEZE_REGEX', '/^(?:#freeze\s*)+/im');
     
     function plugin_edit_action()
     {
  • 上のPatchでは、freezeで始まる別のプラグインがあった場合に妨害してしまう可能性がありますので、以下のような修正も提示しておきます。 -- Mizar 2005-03-10 (木) 22:56:22
    define('PLUGIN_EDIT_FREEZE_REGEX', '/^(?:#freeze(?!\w)\s*)+/im');
    • 正規表現って難しいですね (^^; -- teanan 2005-03-11 (金) 02:15:22
    • ご指摘の部分をコミットしました。cvs:plugin/edit.inc.php (1.32) -- teanan 2005-03-11 (金) 02:42:54
  • むしろ、エラーを吐いて更新を拒絶する方が適切な処理だったかもしれません。 (^^; -- Mizar 2005-03-11 (金) 08:20:39


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2005-03-11 (金) 08:20:39
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.241 sec.

OSDN