diff --git a/app/models/attachment.rb b/app/models/attachment.rb index 74669f569..a9d15d946 100644 --- a/app/models/attachment.rb +++ b/app/models/attachment.rb @@ -24,6 +24,7 @@ class Attachment < ActiveRecord::Base validates_presence_of :filename, :author validates_length_of :filename, :maximum => 255 validates_length_of :disk_filename, :maximum => 255 + validates_length_of :description, :maximum => 255, :allow_blank => true validate :validate_max_file_size acts_as_event :title => :filename, diff --git a/app/views/attachments/_form.html.erb b/app/views/attachments/_form.html.erb index 7eea17bb7..dd55fa3f1 100644 --- a/app/views/attachments/_form.html.erb +++ b/app/views/attachments/_form.html.erb @@ -10,7 +10,7 @@ <%= file_field_tag 'attachments[1][file]', :size => 30, :id => nil, :class => 'file', :onchange => "checkFileSize(this, #{Setting.attachment_max_size.to_i.kilobytes}, '#{escape_javascript(l(:error_attachment_too_big, :max_size => number_to_human_size(Setting.attachment_max_size.to_i.kilobytes)))}');" -%> - <%= text_field_tag 'attachments[1][description]', '', :id => nil, :class => 'description', :placeholder => l(:label_optional_description) %> + <%= text_field_tag 'attachments[1][description]', '', :id => nil, :class => 'description', :maxlength => 255, :placeholder => l(:label_optional_description) %> <%= link_to_function(image_tag('delete.png'), 'removeFileField(this)', :title => (l(:button_delete))) %> diff --git a/doc/CHANGELOG b/doc/CHANGELOG index eb606b059..41d09614f 100644 --- a/doc/CHANGELOG +++ b/doc/CHANGELOG @@ -8,6 +8,7 @@ http://www.redmine.org/ * Defect #11192: Make repository identifier accept underscores * Defect #11307: Can't filter for negative numeric custom fields +* Defect #11365: Attachment description length is not validated * Feature #11338: Exclude emails with auto-submitted => auto-generated * Patch #11328: Fix Japanese mistranslation for 'label_language_based' diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb index e039468c2..9a842012a 100644 --- a/test/functional/issues_controller_test.rb +++ b/test/functional/issues_controller_test.rb @@ -1305,6 +1305,7 @@ class IssuesControllerTest < ActionController::TestCase :tag => 'input', :attributes => {:type => 'file', :name => 'attachments[1][file]'} } + assert_select 'input[name=?][maxlength=255]', 'attachments[1][description]' end def test_get_new_should_prefill_the_form_from_params diff --git a/test/unit/attachment_test.rb b/test/unit/attachment_test.rb index 9238a10c7..627c5c6fc 100644 --- a/test/unit/attachment_test.rb +++ b/test/unit/attachment_test.rb @@ -75,6 +75,12 @@ class AttachmentTest < ActiveSupport::TestCase end end + def test_description_length_should_be_validated + a = Attachment.new(:description => 'a' * 300) + assert !a.save + assert_not_nil a.errors[:description] + end + def test_destroy a = Attachment.new(:container => Issue.find(1), :file => uploaded_test_file("testfile.txt", "text/plain"),