Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Simon Marchi <simark@simark.ca>
To: Michael Weghorn <m.weghorn@posteo.de>, gdb-patches@sourceware.org
Subject: Re: [PATCH 3/4] [PR gdbserver/25893]: Use construct_inferior_arguments which handles special chars
Date: Thu, 7 May 2020 16:09:20 -0400	[thread overview]
Message-ID: <17f345c8-eb7f-a3bb-c133-98533c7fa1c5@simark.ca> (raw)
In-Reply-To: <20200429111638.1327262-5-m.weghorn@posteo.de>

On 2020-04-29 7:16 a.m., Michael Weghorn via Gdb-patches wrote:
> Use the construct_inferior_arguments function instead of
> stringify_argv to construct a string from the program
> arguments in those places where that one is then passed
> to fork_inferior, since construct_inferior_arguments
> properly takes care of special characters, while
> stringify_argv does not.
> Using construct_inferior_arguments seems "natural", since its
> documentation also mentions that it "does the
> same shell processing as fork_inferior".
> 
> This makes gdbserver properly handle program args containing special
> characters, e.g. (example from PR25893)
> 
>   $ gdbserver localhost:50505 myprogram "hello world"
> 
> now properly handles "hello world" as a single arg, not two separate
> ones ("hello", "world").
> 
> I'm not sure regarding the two remaining uses of function stringify_argv
> (in win32_process_target::create_inferior and
> nto_process_target::create_inferior) whose result is not passed to
> fork_inferior and don't know how the arg processing in the creation
> of processes on those targets exactly works, so left them unchanged
> for now.

I'd say, do the change the best you can for win32 and nto.  We'll be
able to test win32.  Regarding nto, it hasn't seen patches for years,
it most likely doesn't even build.  And the toolchain not being easily
available, we can't do much about it.  I think we should actually
consider removing this port, unless somebody steps up to maintain it.
Same for lynx.

This will allow removing stringify_argv, and avoid having duplicate
broken functionality of construct_inferior_arguments.

> 2020-04-29  Michael Weghorn  <m.weghorn@posteo.de>
> 
>         PR gdbserver/25893
>         * linux-low.cc (linux_process_target::create_inferior),
>         lynx-low.cc (lynx_process_target::create_inferior): Use
>         construct_inferior_arguments instead of stringify_argv
>         to get string representation which properly escapes
>         special characters.
> ---
>  gdbserver/linux-low.cc | 2 +-
>  gdbserver/lynx-low.cc  | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/gdbserver/linux-low.cc b/gdbserver/linux-low.cc
> index 3cd8d5594d..3f3ffc6c43 100644
> --- a/gdbserver/linux-low.cc
> +++ b/gdbserver/linux-low.cc
> @@ -984,7 +984,7 @@ linux_process_target::create_inferior (const char *program,
>    {
>      maybe_disable_address_space_randomization restore_personality
>        (cs.disable_randomization);
> -    std::string str_program_args = stringify_argv (program_args);
> +    std::string str_program_args = construct_inferior_arguments (program_args.size(), program_args.data());

This line is too long, see below.

>  
>      pid = fork_inferior (program,
>  			 str_program_args.c_str (),
> diff --git a/gdbserver/lynx-low.cc b/gdbserver/lynx-low.cc
> index 9aa140c129..61f692f0c0 100644
> --- a/gdbserver/lynx-low.cc
> +++ b/gdbserver/lynx-low.cc
> @@ -253,7 +253,7 @@ lynx_process_target::create_inferior (const char *program,
>  				      const std::vector<char *> &program_args)
>  {
>    int pid;
> -  std::string str_program_args = stringify_argv (program_args);
> +  std::string str_program_args = construct_inferior_arguments (program_args.size(), program_args.data());;

Extra semi-colon, and spaces before parenthesis.  The line should fit in 80 columns, here's how
we'd typically break it:

  std::string str_program_args
    = construct_inferior_arguments (program_args.size (), program_args.data ());

(with the equal sign on the second line, I know that may seem odd)

If you are game, you could make another preparatory patch (anywhere in the series
before this one) that would make construct_inferior_arguments take a
gdb::array_view<char *> parameter.  That would allow you to call it more simply
here:

  construct_inferior_arguments (program_args);

Simon



  reply	other threads:[~2020-05-07 20:09 UTC|newest]

Thread overview: 87+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-29 11:16 Patches for PR 25893 "gdbserver incorrectly handles program args containing space" Michael Weghorn
2020-04-29 11:16 ` [PATCH 0/4] gdb: Move construct_inferior_arguments to gdbsupport Michael Weghorn
2020-05-07 19:31   ` Simon Marchi
2020-05-12 15:50     ` Michael Weghorn
2020-04-29 11:16 ` [PATCH 1/4] gdbsupport: Extend construct_inferior_arguments to allow handling all stringify_args cases Michael Weghorn
2020-04-29 15:25   ` Christian Biesinger
2020-04-29 15:45     ` Christian Biesinger
2020-05-07 19:29       ` Simon Marchi
2020-05-12 15:48         ` Michael Weghorn
2020-05-12 16:11           ` Simon Marchi
2020-05-12 16:24             ` Michael Weghorn
2020-04-30  6:02     ` [PATCH v2 " Michael Weghorn
2020-05-07 19:49       ` Simon Marchi
2020-05-12 15:57         ` Michael Weghorn
2020-04-29 11:16 ` [PATCH 2/4] gdbserver: Don't add extra NULL to program args Michael Weghorn
2020-05-07 19:54   ` Simon Marchi
2020-05-12 16:00     ` Michael Weghorn
2020-04-29 11:16 ` [PATCH 3/4] [PR gdbserver/25893]: Use construct_inferior_arguments which handles special chars Michael Weghorn
2020-05-07 20:09   ` Simon Marchi [this message]
2020-05-07 22:09     ` Simon Marchi
2020-05-12 16:10       ` Michael Weghorn
2020-05-12 16:07     ` Michael Weghorn
2020-05-12 17:37       ` Simon Marchi
2020-05-13  1:59         ` Simon Marchi
2020-05-13  9:51           ` Michael Weghorn
2020-04-29 11:16 ` [PATCH 4/4] [PR gdbserver/25893]: Add gdbserver test for argument with space in it Michael Weghorn
2020-05-07 22:15   ` Simon Marchi
2020-05-10 15:59     ` [PATCH 1/2] gdb/testsuite: support passing inferior arguments with native-gdbserver board Simon Marchi
2020-05-10 15:59       ` [PATCH 2/2] gdb/testsuite: add inferior arguments test Simon Marchi
2020-05-15 20:07         ` Pedro Alves
2020-05-19 17:13           ` Simon Marchi
2020-05-20 16:28             ` Michael Weghorn
2020-05-15 20:07       ` [PATCH 1/2] gdb/testsuite: support passing inferior arguments with native-gdbserver board Pedro Alves
2020-05-10 16:09     ` [PATCH 4/4] [PR gdbserver/25893]: Add gdbserver test for argument with space in it Simon Marchi
2020-05-11 14:33       ` Michael Weghorn
2020-05-11 15:04         ` Simon Marchi
2020-05-12 16:20           ` Michael Weghorn
2020-05-12 16:50             ` Simon Marchi
2020-05-13  9:55               ` Michael Weghorn
2020-04-29 15:27 ` Patches for PR 25893 "gdbserver incorrectly handles program args containing space" Simon Marchi
2020-04-30  6:03   ` Michael Weghorn
2020-05-12 15:42 ` [PATCH v3 1/6] gdb: Move construct_inferior_arguments to gdbsupport Michael Weghorn
2020-05-12 15:42   ` [PATCH v3 2/6] gdbsupport: Adapt construct_inferior_arguments Michael Weghorn
2020-05-12 17:53     ` Simon Marchi
2020-05-13  9:56       ` Michael Weghorn
2020-05-12 15:42   ` [PATCH v3 3/6] gdbserver: Don't add extra NULL to program args Michael Weghorn
2020-05-12 15:42   ` [PATCH v3 4/6] nto_process_target::create_inferior: Pass args as char ** Michael Weghorn
2020-05-12 18:34     ` Simon Marchi
2020-05-13  9:56       ` Michael Weghorn
2020-05-12 15:42   ` [PATCH v3 5/6] [PR gdbserver/25893]: Use construct_inferior_arguments which handles special chars Michael Weghorn
2020-05-13  0:52     ` Simon Marchi
2020-05-13  0:54       ` Simon Marchi
2020-05-13  9:58         ` Michael Weghorn
2020-05-12 15:42   ` [PATCH v3 6/6] gdbsupport: Drop now unused function 'stringify_argv' Michael Weghorn
2020-05-13  0:52     ` Simon Marchi
2020-05-13  9:47 ` [PATCH v4 1/9] gdb: Move construct_inferior_arguments to gdbsupport Michael Weghorn
2020-05-13  9:47   ` [PATCH v4 2/9] gdbsupport: Adapt construct_inferior_arguments Michael Weghorn
2020-05-13  9:47   ` [PATCH v4 3/9] gdbsupport: Let construct_inferior_arguments take gdb::array_view param Michael Weghorn
2020-05-13  9:47   ` [PATCH v4 4/9] gdbserver: Don't add extra NULL to program args Michael Weghorn
2020-05-13  9:47   ` [PATCH v4 5/9] nto_process_target::create_inferior: Pass args as char ** Michael Weghorn
2020-05-13  9:47   ` [PATCH v4 6/9] [PR gdbserver/25893]: Use construct_inferior_arguments which handles special chars Michael Weghorn
2020-05-13  9:47   ` [PATCH v4 7/9] gdbsupport: Drop now unused function 'stringify_argv' Michael Weghorn
2020-05-13  9:47   ` [PATCH v4 8/9] gdb/testsuite: support passing inferior arguments with native-gdbserver board Michael Weghorn
2020-05-15 17:29     ` Tom de Vries
2020-05-19 17:11       ` Simon Marchi
2020-05-19 17:22         ` Simon Marchi
2020-05-19 18:46           ` Tom de Vries
2020-05-25 15:14             ` Simon Marchi
2020-05-13  9:47   ` [PATCH v4 9/9] gdb/testsuite: add inferior arguments test Michael Weghorn
2020-05-13 14:39   ` [PATCH v4 1/9] gdb: Move construct_inferior_arguments to gdbsupport Simon Marchi
2020-05-13 15:01     ` Michael Weghorn
2020-05-13 15:05       ` Simon Marchi
2020-05-20 16:37         ` Michael Weghorn
2020-05-20 16:40           ` Simon Marchi
2020-05-20 16:21 ` [PATCH v5 " Michael Weghorn
2020-05-20 16:21   ` [PATCH v5 2/9] gdbsupport: Adapt construct_inferior_arguments Michael Weghorn
2020-05-20 16:21   ` [PATCH v5 3/9] gdbsupport: Let construct_inferior_arguments take gdb::array_view param Michael Weghorn
2020-05-20 16:21   ` [PATCH v5 4/9] gdbserver: Don't add extra NULL to program args Michael Weghorn
2020-05-20 16:21   ` [PATCH v5 5/9] nto_process_target::create_inferior: Pass args as char ** Michael Weghorn
2020-05-20 16:21   ` [PATCH v5 6/9] [PR gdbserver/25893]: Use construct_inferior_arguments which handles special chars Michael Weghorn
2020-05-20 16:21   ` [PATCH v5 7/9] gdbsupport: Drop now unused function 'stringify_argv' Michael Weghorn
2020-05-20 16:21   ` [PATCH v5 8/9] gdb/testsuite: support passing inferior arguments with native-gdbserver board Michael Weghorn
2020-05-20 16:21   ` [PATCH v5 9/9] gdb/testsuite: add inferior arguments test Michael Weghorn
2020-05-25 15:42   ` [PATCH v5 1/9] gdb: Move construct_inferior_arguments to gdbsupport Simon Marchi
2020-05-26  6:17     ` Michael Weghorn
2021-09-28 14:33       ` Simon Marchi via Gdb-patches
2021-09-29  5:53         ` Michael Weghorn via Gdb-patches

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=17f345c8-eb7f-a3bb-c133-98533c7fa1c5@simark.ca \
    --to=simark@simark.ca \
    --cc=gdb-patches@sourceware.org \
    --cc=m.weghorn@posteo.de \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox