Commit 959863b92b3b362a2dfb267a4f7ec1cacb9d8ad2
Exists in
master
and in
4 other branches
Merge pull request #5475 from nkukard/esc-strings
Escape strings
Showing
1 changed file
with
16 additions
and
14 deletions
Show diff stats
lib/gitlab/backend/shell.rb
| 1 | +require "shellwords" | ||
| 2 | + | ||
| 1 | module Gitlab | 3 | module Gitlab |
| 2 | class Shell | 4 | class Shell |
| 3 | class AccessDenied < StandardError; end | 5 | class AccessDenied < StandardError; end |
| @@ -10,7 +12,7 @@ module Gitlab | @@ -10,7 +12,7 @@ module Gitlab | ||
| 10 | # add_repository("gitlab/gitlab-ci") | 12 | # add_repository("gitlab/gitlab-ci") |
| 11 | # | 13 | # |
| 12 | def add_repository(name) | 14 | def add_repository(name) |
| 13 | - system "#{gitlab_shell_user_home}/gitlab-shell/bin/gitlab-projects", "add-project", "#{name}.git" | 15 | + system "#{gitlab_shell_user_home}/gitlab-shell/bin/gitlab-projects", "add-project", Shellwords.shellescape("#{name}.git") |
| 14 | end | 16 | end |
| 15 | 17 | ||
| 16 | # Import repository | 18 | # Import repository |
| @@ -21,7 +23,7 @@ module Gitlab | @@ -21,7 +23,7 @@ module Gitlab | ||
| 21 | # import_repository("gitlab/gitlab-ci", "https://github.com/randx/six.git") | 23 | # import_repository("gitlab/gitlab-ci", "https://github.com/randx/six.git") |
| 22 | # | 24 | # |
| 23 | def import_repository(name, url) | 25 | def import_repository(name, url) |
| 24 | - system "#{gitlab_shell_user_home}/gitlab-shell/bin/gitlab-projects", "import-project", "#{name}.git", url | 26 | + system "#{gitlab_shell_user_home}/gitlab-shell/bin/gitlab-projects", "import-project", Shellwords.shellescape("#{name}.git"), Shellwords.shellescape(url) |
| 25 | end | 27 | end |
| 26 | 28 | ||
| 27 | # Move repository | 29 | # Move repository |
| @@ -33,7 +35,7 @@ module Gitlab | @@ -33,7 +35,7 @@ module Gitlab | ||
| 33 | # mv_repository("gitlab/gitlab-ci", "randx/gitlab-ci-new.git") | 35 | # mv_repository("gitlab/gitlab-ci", "randx/gitlab-ci-new.git") |
| 34 | # | 36 | # |
| 35 | def mv_repository(path, new_path) | 37 | def mv_repository(path, new_path) |
| 36 | - system "#{gitlab_shell_user_home}/gitlab-shell/bin/gitlab-projects", "mv-project", "#{path}.git", "#{new_path}.git" | 38 | + system "#{gitlab_shell_user_home}/gitlab-shell/bin/gitlab-projects", "mv-project", Shellwords.shellescape("#{path}.git"), Shellwords.shellescape("#{new_path}.git") |
| 37 | end | 39 | end |
| 38 | 40 | ||
| 39 | # Update HEAD for repository | 41 | # Update HEAD for repository |
| @@ -45,7 +47,7 @@ module Gitlab | @@ -45,7 +47,7 @@ module Gitlab | ||
| 45 | # update_repository_head("gitlab/gitlab-ci", "3-1-stable") | 47 | # update_repository_head("gitlab/gitlab-ci", "3-1-stable") |
| 46 | # | 48 | # |
| 47 | def update_repository_head(path, branch) | 49 | def update_repository_head(path, branch) |
| 48 | - system "#{gitlab_shell_user_home}/gitlab-shell/bin/gitlab-projects", "update-head", "#{path}.git", branch | 50 | + system "#{gitlab_shell_user_home}/gitlab-shell/bin/gitlab-projects", "update-head", Shellwords.shellescape("#{path}.git"), Shellwords.shellescape(branch) |
| 49 | end | 51 | end |
| 50 | 52 | ||
| 51 | # Fork repository to new namespace | 53 | # Fork repository to new namespace |
| @@ -57,18 +59,18 @@ module Gitlab | @@ -57,18 +59,18 @@ module Gitlab | ||
| 57 | # fork_repository("gitlab/gitlab-ci", "randx") | 59 | # fork_repository("gitlab/gitlab-ci", "randx") |
| 58 | # | 60 | # |
| 59 | def fork_repository(path, fork_namespace) | 61 | def fork_repository(path, fork_namespace) |
| 60 | - system "#{gitlab_shell_user_home}/gitlab-shell/bin/gitlab-projects", "fork-project", "#{path}.git", fork_namespace | 62 | + system "#{gitlab_shell_user_home}/gitlab-shell/bin/gitlab-projects", "fork-project", Shellwords.shellescape("#{path}.git"), Shellwords.shellescape(fork_namespace) |
| 61 | end | 63 | end |
| 62 | 64 | ||
| 63 | # Remove repository from file system | 65 | # Remove repository from file system |
| 64 | # | 66 | # |
| 65 | - # name - project path with namespace | 67 | + # path - project path with namespace |
| 66 | # | 68 | # |
| 67 | # Ex. | 69 | # Ex. |
| 68 | # remove_repository("gitlab/gitlab-ci") | 70 | # remove_repository("gitlab/gitlab-ci") |
| 69 | # | 71 | # |
| 70 | - def remove_repository(name) | ||
| 71 | - system "#{gitlab_shell_user_home}/gitlab-shell/bin/gitlab-projects", "rm-project", "#{name}.git" | 72 | + def remove_repository(path) |
| 73 | + system "#{gitlab_shell_user_home}/gitlab-shell/bin/gitlab-projects", "rm-project", Shellwords.shellescape("#{path}.git") | ||
| 72 | end | 74 | end |
| 73 | 75 | ||
| 74 | # Add repository branch from passed ref | 76 | # Add repository branch from passed ref |
| @@ -81,7 +83,7 @@ module Gitlab | @@ -81,7 +83,7 @@ module Gitlab | ||
| 81 | # add_branch("gitlab/gitlab-ci", "4-0-stable", "master") | 83 | # add_branch("gitlab/gitlab-ci", "4-0-stable", "master") |
| 82 | # | 84 | # |
| 83 | def add_branch(path, branch_name, ref) | 85 | def add_branch(path, branch_name, ref) |
| 84 | - system "#{gitlab_shell_user_home}/gitlab-shell/bin/gitlab-projects", "create-branch", "#{path}.git", branch_name, ref | 86 | + system "#{gitlab_shell_user_home}/gitlab-shell/bin/gitlab-projects", "create-branch", Shellwords.shellescape("#{path}.git"), Shellwords.shellescape(branch_name), Shellwords.shellescape(ref) |
| 85 | end | 87 | end |
| 86 | 88 | ||
| 87 | # Remove repository branch | 89 | # Remove repository branch |
| @@ -93,7 +95,7 @@ module Gitlab | @@ -93,7 +95,7 @@ module Gitlab | ||
| 93 | # rm_branch("gitlab/gitlab-ci", "4-0-stable") | 95 | # rm_branch("gitlab/gitlab-ci", "4-0-stable") |
| 94 | # | 96 | # |
| 95 | def rm_branch(path, branch_name) | 97 | def rm_branch(path, branch_name) |
| 96 | - system "#{gitlab_shell_user_home}/gitlab-shell/bin/gitlab-projects", "rm-branch", "#{path}.git", branch_name | 98 | + system "#{gitlab_shell_user_home}/gitlab-shell/bin/gitlab-projects", "rm-branch", Shellwords.shellescape("#{path}.git"), Shellwords.shellescape(branch_name) |
| 97 | end | 99 | end |
| 98 | 100 | ||
| 99 | # Add repository tag from passed ref | 101 | # Add repository tag from passed ref |
| @@ -106,7 +108,7 @@ module Gitlab | @@ -106,7 +108,7 @@ module Gitlab | ||
| 106 | # add_tag("gitlab/gitlab-ci", "v4.0", "master") | 108 | # add_tag("gitlab/gitlab-ci", "v4.0", "master") |
| 107 | # | 109 | # |
| 108 | def add_tag(path, tag_name, ref) | 110 | def add_tag(path, tag_name, ref) |
| 109 | - system "#{gitlab_shell_user_home}/gitlab-shell/bin/gitlab-projects", "create-tag", "#{path}.git", tag_name, ref | 111 | + system "#{gitlab_shell_user_home}/gitlab-shell/bin/gitlab-projects", "create-tag", Shellwords.shellescape("#{path}.git"), Shellwords.shellescape(tag_name), Shellwords.shellescape(ref) |
| 110 | end | 112 | end |
| 111 | 113 | ||
| 112 | # Remove repository tag | 114 | # Remove repository tag |
| @@ -118,7 +120,7 @@ module Gitlab | @@ -118,7 +120,7 @@ module Gitlab | ||
| 118 | # rm_tag("gitlab/gitlab-ci", "v4.0") | 120 | # rm_tag("gitlab/gitlab-ci", "v4.0") |
| 119 | # | 121 | # |
| 120 | def rm_tag(path, tag_name) | 122 | def rm_tag(path, tag_name) |
| 121 | - system "#{gitlab_shell_user_home}/gitlab-shell/bin/gitlab-projects", "rm-tag", "#{path}.git", tag_name | 123 | + system "#{gitlab_shell_user_home}/gitlab-shell/bin/gitlab-projects", "rm-tag", Shellwords.shellescape("#{path}.git"), Shellwords.shellescape(tag_name) |
| 122 | end | 124 | end |
| 123 | 125 | ||
| 124 | # Add new key to gitlab-shell | 126 | # Add new key to gitlab-shell |
| @@ -127,7 +129,7 @@ module Gitlab | @@ -127,7 +129,7 @@ module Gitlab | ||
| 127 | # add_key("key-42", "sha-rsa ...") | 129 | # add_key("key-42", "sha-rsa ...") |
| 128 | # | 130 | # |
| 129 | def add_key(key_id, key_content) | 131 | def add_key(key_id, key_content) |
| 130 | - system "#{gitlab_shell_user_home}/gitlab-shell/bin/gitlab-keys", "add-key", key_id, key_content | 132 | + system "#{gitlab_shell_user_home}/gitlab-shell/bin/gitlab-keys", "add-key", Shellwords.shellescape(key_id), Shellwords.shellescape(key_content) |
| 131 | end | 133 | end |
| 132 | 134 | ||
| 133 | # Remove ssh key from gitlab shell | 135 | # Remove ssh key from gitlab shell |
| @@ -136,7 +138,7 @@ module Gitlab | @@ -136,7 +138,7 @@ module Gitlab | ||
| 136 | # remove_key("key-342", "sha-rsa ...") | 138 | # remove_key("key-342", "sha-rsa ...") |
| 137 | # | 139 | # |
| 138 | def remove_key(key_id, key_content) | 140 | def remove_key(key_id, key_content) |
| 139 | - system "#{gitlab_shell_user_home}/gitlab-shell/bin/gitlab-keys", "rm-key", key_id, key_content | 141 | + system "#{gitlab_shell_user_home}/gitlab-shell/bin/gitlab-keys", "rm-key", Shellwords.shellescape(key_id), Shellwords.shellescape(key_content) |
| 140 | end | 142 | end |
| 141 | 143 | ||
| 142 | # Remove all ssh keys from gitlab shell | 144 | # Remove all ssh keys from gitlab shell |