summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTiago Botelho <tiagonbotelho@hotmail.com>2017-07-17 15:04:41 +0100
committerTiago Botelho <tiagonbotelho@hotmail.com>2017-07-17 15:04:41 +0100
commit9ab8a9b347cd77bb3ae1e10e3f88426073200721 (patch)
treef7051719e96b899f29e6656bc29d124140f470c0
parent15fda22c5c968b01c824b8f1e979c4fa47f17edc (diff)
downloadgitlab-ce-29652-race-condition-in-project-uploads-fix.tar.gz
Fixes race condition in project uploads29652-race-condition-in-project-uploads-fix
-rw-r--r--app/controllers/import/gitlab_projects_controller.rb6
1 files changed, 5 insertions, 1 deletions
diff --git a/app/controllers/import/gitlab_projects_controller.rb b/app/controllers/import/gitlab_projects_controller.rb
index 36d246d185b..ca36ad0003a 100644
--- a/app/controllers/import/gitlab_projects_controller.rb
+++ b/app/controllers/import/gitlab_projects_controller.rb
@@ -12,7 +12,7 @@ class Import::GitlabProjectsController < Import::BaseController
return redirect_back_or_default(options: { alert: "You need to upload a GitLab project export archive." })
end
- import_upload_path = Gitlab::ImportExport.import_upload_path(filename: project_params[:file].original_filename)
+ import_upload_path = Gitlab::ImportExport.import_upload_path(filename: tmp_filename)
FileUtils.mkdir_p(File.dirname(import_upload_path))
FileUtils.copy_entry(project_params[:file].path, import_upload_path)
@@ -34,6 +34,10 @@ class Import::GitlabProjectsController < Import::BaseController
private
+ def tmp_filename
+ "#{SecureRandom.hex}_#{project_params[:file].original_filename}"
+ end
+
def file_is_valid?
project_params[:file] && project_params[:file].respond_to?(:read)
end