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

Re: [PATCH] config: don't segfault when given --path with a missing value

From
Jeff King <peff@peff.net>
Date
Nov 15, 2012, 16:11 UTC
Message-ID
<20121115161149.GB6157@sigill.intra.peff.net>
In-Reply-To
<20121115160847.GA6157@sigill.intra.peff.net>
On Thu, Nov 15, 2012 at 08:08:49AM -0800, Jeff King wrote:
Show 19 quoted lines
> That is definitely the right thing to do. But do we also need to take
> note of the error for later? After this code:
> 
> >  	} else if (types == TYPE_PATH) {
> > -		git_config_pathname(&vptr, key_, value_);
> > -		must_free_vptr = 1;
> > +		must_free_vptr = !git_config_pathname(&vptr, key_, value_);
> 
> We don't have any clue that nothing got written into vptr. Which means
> it still points at the stack buffer "value", which contains
> uninitialized bytes. We will later try to print it, thinking it has the
> expanded path in it.
> 
> Do we need something like:
> 
>   if (!git_config_pathname(&vptr, key_, value_))
>           must_free_vptr = 1;
>   else
>           vptr = "";

Hmm, actually, we should probably propagate the error (I was thinking for some reason this was in the listing code, but it is really about getting a specific variable, and that variable does not have a sane format. We'll already have printed the non-bool error, so we should probably die. So more like:

  if (git_config_pathname(&vptr, key_, value_) < 0)
          return -1;
  must_free_vptr = 1;
-Peff
Previous: Jeff KingNext: Jeff King
Message 3 of 6 in “config: don't segfault when given --path with a missing value”
  1. config: don't segfault when given --path with a missing valueCarlos Martín Nieto, Nov 14, 2012
  2. Jeff KingNov 15, 2012
  3. Jeff KingNov 15, 2012
  4. Jeff KingNov 15, 2012
  5. config: don't segfault when given --path with a missing valueCarlos Martín Nieto, Nov 15, 2012
  6. Jeff KingNov 15, 2012

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.