From c72e71552209aae964e5aa931d435f7e1164e5d1 Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Fri, 24 Feb 2017 09:38:44 -0600 Subject: Raise error when no content is provided --- app/services/files/create_service.rb | 4 ++++ app/services/files/multi_service.rb | 22 +++++++++++++++------- app/services/files/update_service.rb | 4 ++++ lib/gitlab/git/index.rb | 2 -- 4 files changed, 23 insertions(+), 9 deletions(-) diff --git a/app/services/files/create_service.rb b/app/services/files/create_service.rb index 63be33409e2..ec45a60eda1 100644 --- a/app/services/files/create_service.rb +++ b/app/services/files/create_service.rb @@ -16,6 +16,10 @@ module Files def validate super + if @file_content.empty? + raise_error("You must provide content.") + end + if @file_path =~ Gitlab::Regex.directory_traversal_regex raise_error( 'Your changes could not be committed, because the file name ' + diff --git a/app/services/files/multi_service.rb b/app/services/files/multi_service.rb index 2c89f6e7f92..93f77f29aff 100644 --- a/app/services/files/multi_service.rb +++ b/app/services/files/multi_service.rb @@ -27,7 +27,7 @@ module Files else raise_error("Unknown action type `#{action[:action]}`.") end - + unless action[:file_path].present? raise_error("You must specify a file_path.") end @@ -100,6 +100,20 @@ module Files if repository.blob_at_branch(params[:branch], action[:file_path]) raise_error("Your changes could not be committed because a file with the name `#{action[:file_path]}` already exists.") end + + if action[:content].empty? + raise_error("You must provide content.") + end + end + + def validate_update(action) + if action[:content].empty? + raise_error("You must provide content.") + end + + if file_has_changed? + raise FileChangedError.new("You are attempting to update a file `#{action[:file_path]}` that has changed since you started editing it.") + end end def validate_delete(action) @@ -122,11 +136,5 @@ module Files params[:actions][index][:content] = blob.data end end - - def validate_update(action) - if file_has_changed? - raise FileChangedError.new("You are attempting to update a file `#{action[:file_path]}` that has changed since you started editing it.") - end - end end end diff --git a/app/services/files/update_service.rb b/app/services/files/update_service.rb index a71fe61a4b6..462de06b6ff 100644 --- a/app/services/files/update_service.rb +++ b/app/services/files/update_service.rb @@ -18,6 +18,10 @@ module Files def validate super + if @file_content.empty? + raise_error("You must provide content.") + end + if file_has_changed? raise FileChangedError.new("You are attempting to update a file that has changed since you started editing it.") end diff --git a/lib/gitlab/git/index.rb b/lib/gitlab/git/index.rb index 546696e4bd1..af1744c9c46 100644 --- a/lib/gitlab/git/index.rb +++ b/lib/gitlab/git/index.rb @@ -106,8 +106,6 @@ module Gitlab def add_blob(options, mode: nil) content = options[:content] - return unless content - content = Base64.decode64(content) if options[:encoding] == 'base64' detect = CharlockHolmes::EncodingDetector.new.detect(content) -- cgit v1.2.1