git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 2/2] Fix stack-use-after-scope error reported by ASAN by GCC 7.

From
Jeff King <peff@peff.net>
Date
Apr 6, 2017, 08:33 UTC
Message-ID
<20170406083305.bs3hkxp7dagajg7m@sigill.intra.peff.net>
In-Reply-To
<072afb58-6159-ddeb-b7dc-40a87e8c6ae7@suse.cz>
On Thu, Apr 06, 2017 at 10:02:45AM +0200, Martin Liška wrote:
Show 8 quoted lines
> Subject: [PATCH 2/2] Fix stack-use-after-scope error reported by ASAN by GCC
>  7.
> 
> The use-after-scope is triggered here:
> READ of size 8 at 0x7ffc4f674e20 thread T0
>     #0 0x6f0b69 in finish_command /home/marxin/Programming/git/run-command.c:570
>     #1 0x5b6101 in kill_multi_file_filter /home/marxin/Programming/git/convert.c:570
>     #2 0x5b798a in kill_multi_file_filter /home/marxin/Programming/git/convert.c:770
Yeah, this is definitely a problem. Your fix works, but...
Show 10 quoted lines
> @@ -600,7 +601,8 @@ static struct cmd2process *start_multi_file_filter(struct hashmap *hashmap, cons
>  	process = &entry->process;
>  
>  	child_process_init(process);
> -	process->argv = argv;
> +	process->argv = xcalloc(2, sizeof(const char *));
> +	process->argv[0] = cmd;
>  	process->use_shell = 1;
>  	process->in = -1;
>  	process->out = -1;
We can just do:
  argv_array_push(&process->args, cmd);

here. And then it is freed automatically when finish_command() is called (and also if start_command never starts the process, which I think your patch misses).

-Peff
Previous: Martin LiškaNext: Johannes Schindelin
Message 2 of 4 in “Fix stack-use-after-scope error reported by ASAN by GCC 7.”
  1. 2/2 Fix stack-use-after-scope error reported by ASAN by GCC 7.Martin Liška, Apr 6, 2017
  2. Jeff KingApr 6, 2017
  3. Johannes SchindelinApr 6, 2017
  4. Martin LiškaApr 6, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.