diff options
author | Francisco Javier López <fjlopez@gitlab.com> | 2018-09-07 14:10:15 +0000 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2018-09-07 14:10:15 +0000 |
commit | f67211f9885df6ebbf68c7a9b0106618fa40ff2f (patch) | |
tree | e766521bd1f124300692a303e10a9f04c35c85ba /app/services/wikis | |
parent | 7f2b287f6622dd5052da369a8e83fd6707d96173 (diff) | |
download | gitlab-ce-f67211f9885df6ebbf68c7a9b0106618fa40ff2f.tar.gz |
Replace whitespaces in wiki page attachments file names
Diffstat (limited to 'app/services/wikis')
-rw-r--r-- | app/services/wikis/create_attachment_service.rb | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/app/services/wikis/create_attachment_service.rb b/app/services/wikis/create_attachment_service.rb index 30fe0e371a6..df31ad7c8ea 100644 --- a/app/services/wikis/create_attachment_service.rb +++ b/app/services/wikis/create_attachment_service.rb @@ -11,7 +11,7 @@ module Wikis def initialize(*args) super - @file_name = truncate_file_name(params[:file_name]) + @file_name = clean_file_name(params[:file_name]) @file_path = File.join(ATTACHMENT_PATH, SecureRandom.hex, @file_name) if @file_name @commit_message ||= "Upload attachment #{@file_name}" @branch_name ||= wiki.default_branch @@ -23,8 +23,16 @@ module Wikis private - def truncate_file_name(file_name) + def clean_file_name(file_name) return unless file_name.present? + + file_name = truncate_file_name(file_name) + # CommonMark does not allow Urls with whitespaces, so we have to replace them + # Using the same regex Carrierwave use to replace invalid characters + file_name.gsub(CarrierWave::SanitizedFile.sanitize_regexp, '_') + end + + def truncate_file_name(file_name) return file_name if file_name.length <= MAX_FILENAME_LENGTH extension = File.extname(file_name) |