トップ 差分 一覧 Farm ソース 検索 ヘルプ RSS ログイン

BugTrack-wiki/343

ページの作成や編集にはユーザ登録が必要です。

2011-8-13のパッチでInterWikiNameのリンクがおかしくなる

  • 投稿者: 名無し
  • カテゴリ: 本体
  • 優先度: 緊急
  • 状態: リリース済
  • 日時: 2011年08月15日 19時55分18秒

 内容

例えば、以前はきちんとリンクされていた「Wikipedia:菅直人」のようなリンクが、2011-8-13のパッチをあてる(Util.pmを差し替える)と、正しくリンクされなくなる(文字化けしたとんでもないページへのリンクになってしまう)。

 コメント

  • お使いになられているFSWiki、Perlのバージョンはいくつでしょうか? - たけぞう (2011年08月17日 01時32分19秒)
  • 上記リンクをクリックすればわかるように、このサイト(fswiki3.6.5、perl5.10.0)でもダメですよね。 - 名無しさん (2011年08月17日 06時06分21秒)
  • fswiki3.6.4、perl5.10.1でもダメでした。 - 名無しさん (2011年08月17日 06時10分21秒)
  • InterWikiName では、パラメータ部(":"以降)を指定の文字コードに変換した後、Util::url_encode() に渡します。2011-08-13 の変更では、Util::url_encode() の中で、その引数で与えられた文字列を euc に変換してから、従来の url encode を行うように変更されました。したがって、euc 以外の文字コードが指定された InterWikiName の場合、最終的に出力されるリンクが、指定した文字コードではなく euc になってしまうので問題が発生するものと思われます。上記不具合例に挙がっている Wikipedia は utf8 が指定されているのでこれに該当します。 - 名無し the 2nd (2011年08月17日 16時03分09秒)
  • ご指摘ありがとうございます。修正してSVNにコミットしておきました。セキュリティパッチはのちほどアップデートしておきます。 - たけぞう (2011年08月18日 02時22分38秒)
  • 修正用パッチをリリースしました。Util.pmを差し替えたのち、さらにこちらからダウンロードしたパッチを適用してください。 - たけぞう (2011年08月18日 02時38分24秒)
  • はずしてたらごめんなさい。8/18の修正ですが、文字コード指定のないInterWikiLinkの時にも、eucへの文字コードの変換を行うようにしないと、修正したurl_encode相当の動作にはならないのではないでしょうか。 - 名無しさん (2011年08月18日 16時40分40秒)
  • あ、ご指摘の通りですね。文字コード指定の無い InterWikiName の場合、文字コード変換が全くかからないコードになってますね。 - 名無し the 2nd (2011年08月18日 22時43分28秒)

修正案

Only in .: InterWiki.pm.patch.201108182244
diff -uBpr ../20110818/lib/Wiki/InterWiki.pm ./lib/Wiki/InterWiki.pm
--- ../20110818/lib/Wiki/InterWiki.pm	2011-08-18 02:15:14.000000000 +0900
+++ ./lib/Wiki/InterWiki.pm	2011-08-18 22:35:31.000000000 +0900
@@ -103,8 +103,7 @@ sub _parse_line {
 	    || $source =~ /\[([^\[]+?)\|((\/|\.\/|\.\.\/)+[a-zA-Z0-9\.,%~^_+\-%\/\?\(\)!\$&=:;\*#\@']*)\]/) {
 		my $label = $1;
 		my $url   = $2;
-		my $enc   = "";
-		$self->add_inter_wiki($url,$label,$enc);
+		$self->add_inter_wiki($url,$label,'euc');
 	}
 	# 任意のURLリンク
 	elsif ($source =~ /\[([^\[]+?)\|(.+?)\]\s*([\w\-]+)/) {
@@ -117,8 +116,7 @@ sub _parse_line {
 	elsif ($source =~ /\[([^\[]+?)\|(.+?)\]/) {
 		my $label = $1;
 		my $url   = $2;
-		my $enc   = "";
-		$self->add_inter_wiki($url,$label,$enc);
+		$self->add_inter_wiki($url,$label,'euc');
 
 	}
 }
@@ -159,9 +157,7 @@ sub exists_interwiki {
 			my $enc   = $keyword->{enc};
 			my $param = $1;
 			$self->{g_label} = $keyword->{label}.':'.$param;
-			if ($enc ne q{}) {
-				&Jcode::convert(\$param, $enc);
-			}
+			&Jcode::convert(\$param, $enc);
 			$self->{g_url} = $keyword->{url}._url_encode($param);
 			return 1;
 		}
@@ -172,9 +168,7 @@ sub exists_interwiki {
 			$self->{g_label} = $1;
 			my $enc   = $keyword->{enc};
 			my $param = $2;
-			if ($enc ne q{}) {
-				&Jcode::convert(\$param, $enc);
-			}
+			&Jcode::convert(\$param, $enc);
 			$self->{g_url} = $keyword->{url}._url_encode($param);
 			return 1;
 		}
  • 開発者の日記のコメントに8/18のパッチにバグがあることを書き込もうとしたのですが、画像認証でどうしてもはねられて書き込めない…… - 名無しさん (2011年08月19日 16時38分25秒)
  • 私も先日、同じ状況でした。通常、firefoxを使ってるんですが、それだと認証通過できず、IEを使ったら認証通過して書き込むことができました。 - 名無しさん (2011年08月20日 15時10分56秒)
  • すいません。もう一度修正しました。こちらをご利用ください。 - たけぞう (2011年08月23日 12時07分32秒)
お名前: コメント:
InterWiki.pm.patch.201108182244

最終更新時間:2011年10月03日 08時40分19秒