All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] transport: add core.allowProtocol config option
@ 2016-11-02 22:20 Brandon Williams
  2016-11-02 22:41 ` Stefan Beller
                   ` (4 more replies)
  0 siblings, 5 replies; 124+ messages in thread
From: Brandon Williams @ 2016-11-02 22:20 UTC (permalink / raw)
  To: git; +Cc: sbeller, Brandon Williams

Add configuration option 'core.allowProtocol' to allow users to create a
whitelist of allowed protocols for fetch/push/clone in their gitconfig.

For git-submodule.sh, fallback to default whitelist only if the user
hasn't explicitly set `GIT_ALLOW_PROTOCOL` or doesn't have a whitelist
in their gitconfig.

Signed-off-by: Brandon Williams <bmwill@google.com>
---
 Documentation/config.txt | 9 +++++++++
 git-submodule.sh         | 3 ++-
 transport.c              | 2 +-
 3 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/Documentation/config.txt b/Documentation/config.txt
index 27069ac..7f83e40 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -455,6 +455,15 @@ core.sshCommand::
 	the `GIT_SSH_COMMAND` environment variable and is overridden
 	when the environment variable is set.
 
+core.allowProtocol::
+	Provide a colon-separated list of protocols which are allowed to be
+	used with fetch/push/clone. This is useful to restrict recursive
+	submodule initialization from an untrusted repository. Any protocol not
+	mentioned will be disallowed (i.e., this is a whitelist, not a
+	blacklist). If the variable is not set at all, all protocols are
+	enabled. If the `GIT_ALLOW_PROTOCOL` enviornment variable is set, it is
+	used as the protocol whitelist instead of this config option.
+
 core.ignoreStat::
 	If true, Git will avoid using lstat() calls to detect if files have
 	changed by setting the "assume-unchanged" bit for those tracked files
diff --git a/git-submodule.sh b/git-submodule.sh
index a024a13..ad94c75 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -27,7 +27,8 @@ cd_to_toplevel
 #
 # If the user has already specified a set of allowed protocols,
 # we assume they know what they're doing and use that instead.
-: ${GIT_ALLOW_PROTOCOL=file:git:http:https:ssh}
+config_whitelist=$(git config core.allowProtocol)
+: ${GIT_ALLOW_PROTOCOL=${config_whitelist:-file:git:http:https:ssh}}
 export GIT_ALLOW_PROTOCOL
 
 command=
diff --git a/transport.c b/transport.c
index d57e8de..b1098cd 100644
--- a/transport.c
+++ b/transport.c
@@ -652,7 +652,7 @@ static const struct string_list *protocol_whitelist(void)
 
 	if (enabled < 0) {
 		const char *v = getenv("GIT_ALLOW_PROTOCOL");
-		if (v) {
+		if (v || !git_config_get_value("core.allowProtocol", &v)) {
 			string_list_split(&allowed, v, ':', -1);
 			string_list_sort(&allowed);
 			enabled = 1;
-- 
2.8.0.rc3.226.g39d4020


^ permalink raw reply related	[flat|nested] 124+ messages in thread

end of thread, other threads:[~2016-12-15 17:29 UTC | newest]

Thread overview: 124+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-11-02 22:20 [PATCH] transport: add core.allowProtocol config option Brandon Williams
2016-11-02 22:41 ` Stefan Beller
2016-11-02 22:47   ` Brandon Williams
2016-11-02 23:05 ` Jeff King
2016-11-02 23:08   ` Jeff King
2016-11-02 23:34     ` Brandon Williams
2016-11-02 23:33   ` Brandon Williams
2016-11-02 23:46     ` Brandon Williams
2016-11-03  0:08       ` Jeff King
2016-11-03  0:22 ` Jonathan Nieder
2016-11-03  0:41   ` Blake Burkhart
2016-11-03  2:44   ` Junio C Hamano
2016-11-03 14:38   ` Jeff King
2016-11-03 17:25     ` Brandon Williams
2016-11-03 17:39       ` Stefan Beller
2016-11-03 17:51         ` Brandon Williams
2016-11-03 18:02           ` Jeff King
2016-11-03 18:08             ` Brandon Williams
2016-11-03 18:00         ` Jeff King
2016-11-03 17:53       ` Jeff King
2016-11-03 18:19         ` Brandon Williams
2016-11-03 18:25           ` Jeff King
2016-11-03 18:24         ` Jeff King
2016-11-03 18:45           ` Brandon Williams
2016-11-03 18:50             ` Jeff King
2016-11-03 18:56               ` Brandon Williams
2016-11-03  0:50 ` [PATCH v2] " Brandon Williams
2016-11-04 20:55 ` [PATCH v3] transport: add protocol policy " Brandon Williams
2016-11-04 20:58   ` Brandon Williams
2016-11-04 21:35     ` Stefan Beller
2016-11-04 23:09       ` Jeff King
2016-11-05  0:18         ` Brandon Williams
2016-11-04 22:38   ` Stefan Beller
2016-11-07 18:14     ` Brandon Williams
2016-11-04 23:06   ` Jeff King
2016-11-07 19:17     ` Brandon Williams
2016-11-07 19:35   ` [PATCH v4 1/2] lib-proto-disable: variable name fix Brandon Williams
2016-11-07 19:35     ` [PATCH v4 2/2] transport: add protocol policy config option Brandon Williams
2016-11-07 20:44       ` Jeff King
2016-11-07 21:02         ` Brandon Williams
2016-11-07 20:26     ` [PATCH v4 1/2] lib-proto-disable: variable name fix Jeff King
2016-11-07 20:40       ` Brandon Williams
2016-11-07 20:48         ` Jeff King
2016-11-08  3:32           ` Jacob Keller
2016-11-08 20:52             ` Junio C Hamano
2016-11-07 21:51     ` [PATCH v5 " Brandon Williams
2016-11-07 21:51       ` [PATCH v5 2/2] transport: add protocol policy config option Brandon Williams
2016-11-08 22:04         ` Jeff King
2016-11-08 22:05           ` Brandon Williams
2016-12-01 19:44       ` [PATCH v6 0/4] transport protocol policy configuration Brandon Williams
2016-12-01 19:44         ` [PATCH v6 1/4] lib-proto-disable: variable name fix Brandon Williams
2016-12-01 19:44         ` [PATCH v6 2/4] transport: add protocol policy config option Brandon Williams
2016-12-01 19:44         ` [PATCH v6 3/4] http: always warn if libcurl version is too old Brandon Williams
2016-12-01 19:44         ` [PATCH v6 4/4] transport: check if protocol can be used on a redirect Brandon Williams
2016-12-01 19:48           ` Brandon Williams
2016-12-01 19:49             ` Brandon Williams
2016-12-01 19:50           ` Jeff King
2016-12-01 19:54             ` Junio C Hamano
2016-12-01 19:59               ` Jeff King
2016-12-01 20:01                 ` Brandon Williams
2016-12-01 20:25         ` [PATCH v7 0/4] transport protocol policy configuration Brandon Williams
2016-12-01 20:25           ` [PATCH v7 1/4] lib-proto-disable: variable name fix Brandon Williams
2016-12-01 20:25           ` [PATCH v7 2/4] transport: add protocol policy config option Brandon Williams
2016-12-01 20:25           ` [PATCH v7 3/4] http: always warn if libcurl version is too old Brandon Williams
2016-12-01 20:25           ` [PATCH v7 4/4] transport: add from_user parameter to is_transport_allowed Brandon Williams
2016-12-01 21:40             ` Jeff King
2016-12-01 22:25               ` Junio C Hamano
2016-12-01 23:07               ` Brandon Williams
2016-12-01 23:26                 ` Brandon Williams
2016-12-02  0:13                   ` Jeff King
2016-12-02 17:33                     ` Brandon Williams
2016-12-01 23:34                 ` Junio C Hamano
2016-12-01 23:58                   ` Brandon Williams
2016-12-05 20:04                     ` Junio C Hamano
2016-12-05 22:22                       ` Brandon Williams
2016-12-05 23:19                         ` Junio C Hamano
2016-12-05 23:22                           ` Brandon Williams
2016-12-06 13:51                       ` Jeff King
2016-12-06 17:53                         ` Junio C Hamano
2016-12-06 18:10                           ` Jeff King
2016-12-06 18:24                             ` [PATCH v2] jk/http-walker-limit-redirect rebased to maint-2.9 Jeff King
2016-12-06 18:24                               ` [PATCH v2 1/6] http: simplify update_url_from_redirect Jeff King
2016-12-06 18:24                               ` [PATCH v2 2/6] http: always update the base URL for redirects Jeff King
2016-12-06 18:24                               ` [PATCH v2 3/6] remote-curl: rename shadowed options variable Jeff King
2016-12-06 18:24                               ` [PATCH v2 4/6] http: make redirects more obvious Jeff King
2016-12-06 18:24                               ` [PATCH v2 5/6] http: treat http-alternates like redirects Jeff King
2016-12-06 18:25                               ` [PATCH v2 6/6] http-walker: complain about non-404 loose object errors Jeff King
2016-12-06 22:24                         ` [PATCH v7 4/4] transport: add from_user parameter to is_transport_allowed Brandon Williams
2016-12-02  0:00           ` [PATCH v8 0/5] transport protocol policy configuration Brandon Williams
2016-12-02  0:00             ` [PATCH v8 1/5] lib-proto-disable: variable name fix Brandon Williams
2016-12-02  0:00             ` [PATCH v8 2/5] transport: add protocol policy config option Brandon Williams
2016-12-02  0:01             ` [PATCH v8 3/5] http: always warn if libcurl version is too old Brandon Williams
2016-12-02  0:01             ` [PATCH v8 4/5] http: create function to get curl allowed protocols Brandon Williams
2016-12-02  0:01             ` [PATCH v8 5/5] transport: add from_user parameter to is_transport_allowed Brandon Williams
2016-12-14  1:40             ` [PATCH v9 0/5] transport protocol policy configuration Brandon Williams
2016-12-14  1:40               ` [PATCH v9 1/5] lib-proto-disable: variable name fix Brandon Williams
2016-12-14  1:40               ` [PATCH v9 2/5] transport: add protocol policy config option Brandon Williams
2016-12-14  1:40               ` [PATCH v9 3/5] http: always warn if libcurl version is too old Brandon Williams
2016-12-14 16:01                 ` Jeff King
2016-12-14 17:56                   ` Brandon Williams
2016-12-14  1:40               ` [PATCH v9 4/5] http: create function to get curl allowed protocols Brandon Williams
2016-12-14 16:03                 ` Jeff King
2016-12-14 18:00                   ` Brandon Williams
2016-12-14  1:40               ` [PATCH v9 5/5] transport: add from_user parameter to is_transport_allowed Brandon Williams
2016-12-14 16:40                 ` Jeff King
2016-12-14 20:13                   ` Brandon Williams
2016-12-14 20:33                     ` Jeff King
2016-12-14 21:12                       ` Jeff King
2016-12-14 21:58                         ` Brandon Williams
     [not found]                       ` <CAP3OtXiOPbAkr5Mn+5tEmZZAZzJXQ4CvtpHCg=wt+k-bi6K2vA@mail.gmail.com>
     [not found]                         ` <CAP3OtXhH++szRws20MaHt-ftLBMUJuYiTmfL50mOFP4FA4Mn6Q@mail.gmail.com>
2016-12-14 22:52                           ` Jeff King
2016-12-14 20:37                     ` Brandon Williams
2016-12-14 20:41                       ` Jeff King
2016-12-14 20:50                         ` Brandon Williams
2016-12-14 22:39               ` [PATCH v10 0/6] transport protocol policy configuration Brandon Williams
2016-12-14 22:39                 ` [PATCH v10 1/6] lib-proto-disable: variable name fix Brandon Williams
2016-12-14 22:39                 ` [PATCH v10 2/6] http: always warn if libcurl version is too old Brandon Williams
2016-12-15  0:21                   ` Jeff King
2016-12-15 17:29                     ` Junio C Hamano
2016-12-14 22:39                 ` [PATCH v10 3/6] transport: add protocol policy config option Brandon Williams
2016-12-14 22:39                 ` [PATCH v10 4/6] http: create function to get curl allowed protocols Brandon Williams
2016-12-14 22:39                 ` [PATCH v10 5/6] transport: add from_user parameter to is_transport_allowed Brandon Williams
2016-12-14 22:39                 ` [PATCH v10 6/6] http: respect protocol.*.allow=user for http-alternates Brandon Williams
2016-12-14 23:25                 ` [PATCH v10 0/6] transport protocol policy configuration Junio C Hamano
2016-12-15  0:22                 ` Jeff King

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.