From a328e15dc3291555e55b69c5dcc955a80225efed Mon Sep 17 00:00:00 2001 From: Tom Preston-Werner Date: Thu, 8 Apr 2010 16:31:28 -0700 Subject: [PATCH] ensure filename has an allowed extension --- lib/gollum.rb | 2 +- lib/gollum/page.rb | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/lib/gollum.rb b/lib/gollum.rb index 586abbfd..f41f00ab 100644 --- a/lib/gollum.rb +++ b/lib/gollum.rb @@ -18,6 +18,6 @@ module Gollum # # Returns the String canonical name. def self.canonical_name(name) - name.gsub(/ /, '-').sub(/\.(.+?)$/, '') + name.gsub(/ /, '-') end end \ No newline at end of file diff --git a/lib/gollum/page.rb b/lib/gollum/page.rb index 7085f684..85b5b8fd 100644 --- a/lib/gollum/page.rb +++ b/lib/gollum/page.rb @@ -1,5 +1,7 @@ module Gollum class Page + VALID_PAGE_RE = /^(.+)\.(md|mkdn?|mdown|markdown|textile|rdoc|org|re?st(\.txt)?|asciidoc|pod|\d)$/ + attr_accessor :wiki, :data # Initialize a page. @@ -68,12 +70,16 @@ module Gollum # Compare the canonicalized versions of the two names. # - # name1 - A human or canonical String page name. - # name2 - A human or canonical String page name. + # name - The human or canonical String page name. + # filename - the String filename on disk (including extension). # # Returns a Boolean. - def page_match(name1, name2) - Gollum.canonical_name(name1) == Gollum.canonical_name(name2) + def page_match(name, filename) + if filename =~ VALID_PAGE_RE + Gollum.canonical_name(name) == Gollum.canonical_name($1) + else + false + end end end end \ No newline at end of file