Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.kernel.org/pub/scm/git/git.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/fsck.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2020-03-17 23:37:37 +0300
committerJunio C Hamano <gitster@pobox.com>2020-03-17 23:43:08 +0300
commita5979d7009017c79b0100b7b66e8567b3ad7b022 (patch)
treee0386b6988b0aaeb6a6ce43cd5a4a5eb6c4e6776 /fsck.c
parentcaccc527ca7f4b3e6f4bb6775cbff94b27741482 (diff)
parent21a3e5016bb218dc9b016284c88ba685bc446b70 (diff)
Git 2.19.4v2.19.4
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'fsck.c')
-rw-r--r--fsck.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/fsck.c b/fsck.c
index 78ce79cfee..6b1e5c1d40 100644
--- a/fsck.c
+++ b/fsck.c
@@ -16,6 +16,7 @@
#include "packfile.h"
#include "submodule-config.h"
#include "config.h"
+#include "credential.h"
#include "help.h"
static struct oidset gitmodules_found = OIDSET_INIT;
@@ -988,6 +989,19 @@ static int fsck_tag(struct tag *tag, const char *data,
return fsck_tag_buffer(tag, data, size, options);
}
+static int check_submodule_url(const char *url)
+{
+ struct credential c = CREDENTIAL_INIT;
+ int ret;
+
+ if (looks_like_command_line_option(url))
+ return -1;
+
+ ret = credential_from_url_gently(&c, url, 1);
+ credential_clear(&c);
+ return ret;
+}
+
struct fsck_gitmodules_data {
struct object *obj;
struct fsck_options *options;
@@ -1012,7 +1026,7 @@ static int fsck_gitmodules_fn(const char *var, const char *value, void *vdata)
"disallowed submodule name: %s",
name);
if (!strcmp(key, "url") && value &&
- looks_like_command_line_option(value))
+ check_submodule_url(value) < 0)
data->ret |= report(data->options, data->obj,
FSCK_MSG_GITMODULES_URL,
"disallowed submodule url: %s",