]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki.pm
add link to templates page
[ikiwiki.git] / IkiWiki.pm
index 03441b594da3fd604d628dff1bea29855045abe6..7382f11e4202f4960895b447de94ee4fb55f6f09 100644 (file)
@@ -1654,22 +1654,28 @@ sub saveindex () {
 sub template_file ($) {
        my $name=shift;
        
-       my $tpage="templates/$name";
+       my $tpage=($name =~ /^\//) ? $name : "templates/$name";
        if ($name !~ /\.tmpl$/ && exists $pagesources{$tpage}) {
                $tpage=$pagesources{$tpage};
                $name.=".tmpl";
        }
 
        my $template=srcfile($tpage, 1);
-       if (defined $template) {
+       if (! defined $template) {
+               $name=~s:/::; # avoid path traversal
+               foreach my $dir ($config{templatedir},
+                                "$installdir/share/ikiwiki/templates") {
+                       if (-e "$dir/$name") {
+                               $template="$dir/$name";
+                               last;
+                       }
+               }
+       }
+
+       if (defined $template) {        
                return $template, $tpage if wantarray;
                return $template;
        }
-       
-       foreach my $dir ($config{templatedir},
-                        "$installdir/share/ikiwiki/templates") {
-               return "$dir/$name" if -e "$dir/$name";
-       }
        return;
 }