OSDN Git Service

BugTrack-wiki/343
authortakezoe <takezoe@users.osdn.me>
Wed, 17 Aug 2011 17:17:23 +0000 (17:17 +0000)
committertakezoe <takezoe@users.osdn.me>
Wed, 17 Aug 2011 17:17:23 +0000 (17:17 +0000)
Util::url_encode()のセキュリティ対応修正によるInterWikiNameのバグを修正。

lib/Wiki/InterWiki.pm

index d2734ce..0e90ec0 100644 (file)
@@ -162,7 +162,7 @@ sub exists_interwiki {
                        if ($enc ne q{}) {
                                &Jcode::convert(\$param, $enc);
                        }
-                       $self->{g_url} = $keyword->{url}.Util::url_encode($param);
+                       $self->{g_url} = $keyword->{url}._url_encode($param);
                        return 1;
                }
 
@@ -175,11 +175,19 @@ sub exists_interwiki {
                        if ($enc ne q{}) {
                                &Jcode::convert(\$param, $enc);
                        }
-                       $self->{g_url} = $keyword->{url}.Util::url_encode($param);
+                       $self->{g_url} = $keyword->{url}._url_encode($param);
                        return 1;
                }
        }
        return 0;
 }
 
+sub _url_encode {
+       my $retstr = shift;
+       $retstr =~ s/([^ 0-9A-Za-z])/sprintf("%%%.2X", ord($1))/eg;
+       $retstr =~ tr/ /+/;
+       return $retstr;
+}
+
+
 1;