diff --git a/app/models/attachment.rb b/app/models/attachment.rb index b0cc94cb2..c9bb0b95b 100644 --- a/app/models/attachment.rb +++ b/app/models/attachment.rb @@ -445,7 +445,7 @@ class Attachment < ActiveRecord::Base extension = extension.downcase.sub(/\A\.+/, '') unless extensions.is_a?(Array) - extensions = extensions.to_s.split(",").map(&:strip) + extensions = extensions.to_s.split(/[\s,]+/) end extensions = extensions.map {|s| s.downcase.sub(/\A\.+/, '')}.reject(&:blank?) extensions.include?(extension) diff --git a/app/models/mail_handler.rb b/app/models/mail_handler.rb index 4259eacb2..aa1cb2a0a 100644 --- a/app/models/mail_handler.rb +++ b/app/models/mail_handler.rb @@ -308,7 +308,7 @@ class MailHandler < ActionMailer::Base # Returns false if the +attachment+ of the incoming email should be ignored def accept_attachment?(attachment) - @excluded ||= Setting.mail_handler_excluded_filenames.to_s.split(',').map(&:strip).reject(&:blank?) + @excluded ||= Setting.mail_handler_excluded_filenames.to_s.split(/[\s,]+/).reject(&:blank?) @excluded.each do |pattern| if Setting.mail_handler_enable_regex_excluded_filenames? regexp = %r{\A#{pattern}\z}i diff --git a/test/unit/attachment_test.rb b/test/unit/attachment_test.rb index 5adfc5116..965b0ce25 100644 --- a/test/unit/attachment_test.rb +++ b/test/unit/attachment_test.rb @@ -139,7 +139,7 @@ class AttachmentTest < ActiveSupport::TestCase end def test_extension_should_be_validated_against_denied_extensions - with_settings :attachment_extensions_denied => "txt, png" do + with_settings :attachment_extensions_denied => "txt, png\r\ncsv" do a = Attachment.new(:container => Issue.find(1), :file => mock_file_with_options(:original_filename => "test.jpeg"), :author => User.find(1)) @@ -153,11 +153,11 @@ class AttachmentTest < ActiveSupport::TestCase end def test_valid_extension_should_be_case_insensitive - with_settings :attachment_extensions_allowed => "txt, Png" do + with_settings :attachment_extensions_allowed => "txt, Png\r\ncsv" do assert Attachment.valid_extension?(".pnG") assert !Attachment.valid_extension?(".jpeg") end - with_settings :attachment_extensions_denied => "txt, Png" do + with_settings :attachment_extensions_denied => "txt, Png\r\ncsv" do assert !Attachment.valid_extension?(".pnG") assert Attachment.valid_extension?(".jpeg") end diff --git a/test/unit/mail_handler_test.rb b/test/unit/mail_handler_test.rb index 07532d82e..65c7750e3 100644 --- a/test/unit/mail_handler_test.rb +++ b/test/unit/mail_handler_test.rb @@ -1157,7 +1157,7 @@ class MailHandlerTest < ActiveSupport::TestCase end def test_attachments_that_match_mail_handler_excluded_filenames_should_be_ignored - with_settings :mail_handler_excluded_filenames => "*.vcf,\n *.jpg" do + with_settings :mail_handler_excluded_filenames => "*.vcf,\n *.jpg\r\n*.csv" do issue = submit_email('ticket_with_attachment.eml', :issue => {:project => 'onlinestore'}) assert issue.is_a?(Issue) assert !issue.new_record? @@ -1166,7 +1166,7 @@ class MailHandlerTest < ActiveSupport::TestCase end def test_attachments_that_match_mail_handler_excluded_filenames_by_regex_should_be_ignored - with_settings :mail_handler_excluded_filenames => '.+\.vcf,(pa|nut)ella\.jpg', + with_settings :mail_handler_excluded_filenames => ".+\\.vcf,(pa|nut)ella\\.jpg\r\n.+\\.csv", :mail_handler_enable_regex_excluded_filenames => 1 do issue = submit_email('ticket_with_attachment.eml', :issue => {:project => 'onlinestore'}) assert issue.is_a?(Issue)