summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2013-09-11 19:19:24 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2013-09-11 19:19:24 +0000
commit02fca76c13cde18859eaf6dde2381328feaacb39 (patch)
treebf3e7c6231756b40a7abac6db438bbfaf43484d1
parent06efcaddfa6a62022c868e1faee1b25df8935e93 (diff)
downloadredmine-02fca76c13cde18859eaf6dde2381328feaacb39.tar.gz
redmine-02fca76c13cde18859eaf6dde2381328feaacb39.zip
Strip eols from file names (#14819).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12128 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/models/attachment.rb4
-rw-r--r--test/unit/attachment_test.rb7
2 files changed, 9 insertions, 2 deletions
diff --git a/app/models/attachment.rb b/app/models/attachment.rb
index eeab56242..dd1aa3a7c 100644
--- a/app/models/attachment.rb
+++ b/app/models/attachment.rb
@@ -294,10 +294,10 @@ class Attachment < ActiveRecord::Base
def sanitize_filename(value)
# get only the filename, not the whole path
- just_filename = value.gsub(/^.*(\\|\/)/, '')
+ just_filename = value.gsub(/\A.*(\\|\/)/m, '')
# Finally, replace invalid characters with underscore
- @filename = just_filename.gsub(/[\/\?\%\*\:\|\"\'<>]+/, '_')
+ @filename = just_filename.gsub(/[\/\?\%\*\:\|\"\'<>\n\r]+/, '_')
end
# Returns the subdirectory in which the attachment will be saved
diff --git a/test/unit/attachment_test.rb b/test/unit/attachment_test.rb
index b3608aef7..a038042cb 100644
--- a/test/unit/attachment_test.rb
+++ b/test/unit/attachment_test.rb
@@ -42,6 +42,13 @@ class AttachmentTest < ActiveSupport::TestCase
assert_nil Attachment.new.container
end
+ def test_filename_should_remove_eols
+ assert_equal "line_feed", Attachment.new(:filename => "line\nfeed").filename
+ assert_equal "line_feed", Attachment.new(:filename => "some\npath/line\nfeed").filename
+ assert_equal "carriage_return", Attachment.new(:filename => "carriage\rreturn").filename
+ assert_equal "carriage_return", Attachment.new(:filename => "some\rpath/carriage\rreturn").filename
+ end
+
def test_create
a = Attachment.new(:container => Issue.find(1),
:file => uploaded_test_file("testfile.txt", "text/plain"),