[PATCH v3 5/7] clone: validate --origin option before use
- From
Sean Barag via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Oct 1, 2020, 03:46 UTC
- Message-ID
- <e1d3b54fdc6a2dbf10eb1fc75e41b9dc233a5383.1601523977.git.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.727.v3.git.1601523977.gitgitgadget@gmail.com>
From: Sean Barag <sean@barag.org>
Providing a bad origin name to `git clone` currently reports an 'invalid refspec' error instead of a more explicit message explaining that the `--origin` option was malformed. This behavior dates back to since 8434c2f1 (Build in clone, 2008-04-27). Reintroduce validation for the provided `--origin` option, but notably _don't_ include a multi-level check (e.g. "foo/bar") that was present in the original `git-clone.sh`. `git remote` allows multi-level remote names since at least 46220ca100 (remote.c: Fix overtight refspec validation, 2008-03-20), so that appears to be the desired behavior.
Helped-by: Junio C Hamano <gitster@pobox.com> Helped-by: Derrick Stolee <stolee@gmail.com> Helped-by: Jeff King <peff@peff.net> Signed-off-by: Sean Barag <sean@barag.org> --- builtin/clone.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/builtin/clone.c b/builtin/clone.c index a76dacd988..bd67ff7b01 100644 --- a/builtin/clone.c +++ b/builtin/clone.c @@ -1011,6 +1011,9 @@ int cmd_clone(int argc, const char **argv, const char *prefix) if (!option_origin) option_origin = "origin"; + if (!valid_remote_name(option_origin)) + die(_("'%s' is not a valid remote name"), option_origin); + repo_name = argv[0]; path = get_repo_path(repo_name, &is_bundle);
-- gitgitgadget