From: Junio C Hamano <gitster@pobox.com>
To: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
Cc: git@vger.kernel.org,
Johannes Schindelin <Johannes.Schindelin@gmx.de>,
Phillip Wood <phillip.wood@dunelm.org.uk>
Subject: Re: [PATCH] sequencer.c: fix overflow & segfault in parse_strategy_opts()
Date: Tue, 07 Mar 2023 11:47:12 -0800 [thread overview]
Message-ID: <xmqq5ybcxs1r.fsf@gitster.g> (raw)
In-Reply-To: <patch-1.1-f6a06e25cf3-20230307T182039Z-avarab@gmail.com> ("Ævar Arnfjörð Bjarmason"'s message of "Tue, 7 Mar 2023 19:21:59 +0100")
Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:
> There's a few things that use this for option parsing, but one way to
> trigger it is with a bad value to "-X <strategy-option>", e.g:
>
> git rebase -X"bad argument\""
Wow, that is nasty ;-).
> diff --git a/sequencer.c b/sequencer.c
> index 3e4a1972897..79c615193b6 100644
> --- a/sequencer.c
> +++ b/sequencer.c
> @@ -2876,13 +2876,18 @@ static int populate_opts_cb(const char *key, const char *value, void *data)
> void parse_strategy_opts(struct replay_opts *opts, char *raw_opts)
> {
> int i;
> + int count;
> char *strategy_opts_string = raw_opts;
>
> if (*strategy_opts_string == ' ')
> strategy_opts_string++;
>
> - opts->xopts_nr = split_cmdline(strategy_opts_string,
> - (const char ***)&opts->xopts);
> + count = split_cmdline(strategy_opts_string,
> + (const char ***)&opts->xopts);
> + if (count < 0)
> + die(_("could not split '%s': '%s'"), strategy_opts_string,
> + split_cmdline_strerror(count));
This made me look at split_cmdline_strerror(). It is a table lookup
into split_cmdline_errors[] in alias.c which looks like this:
static const char *split_cmdline_errors[] = {
N_("cmdline ends with \\"),
N_("unclosed quote"),
N_("too many arguments"),
};
So the result is properly localized, but I suspect that the string
after : should not be enclosed within a pair of single quotes.
die(_("could not split '%s': %s", strategy_opts_string,
split_cmdline_strerror(count)));
Other than that, nice find.
Thanks.
next prev parent reply other threads:[~2023-03-07 19:55 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-07 18:21 [PATCH] sequencer.c: fix overflow & segfault in parse_strategy_opts() Ævar Arnfjörð Bjarmason
2023-03-07 19:47 ` Junio C Hamano [this message]
2023-03-07 23:23 ` Junio C Hamano
2023-03-08 16:20 ` Phillip Wood
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xmqq5ybcxs1r.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=avarab@gmail.com \
--cc=git@vger.kernel.org \
--cc=phillip.wood@dunelm.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.