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

Re: [PATCH] show-branch: use strbuf instead of static buffer

From
Jonathan Nieder <jrnieder@gmail.com>
Date
Apr 5, 2013, 23:49 UTC
Message-ID
<20130405234915.GU30308@google.com>
In-Reply-To
<20130405211550.GA4880@sigill.intra.peff.net>
Jeff King wrote:
Show 7 quoted lines
> When we generate relative names (e.g., "master~20^2"), we
> format the name into a static buffer, then xstrdup the
> result to attach it to the commit. Since the first thing we
> add into the static buffer is the already-computed name of
> the child commit, the names may get longer and longer as
> the traversal gets deeper, and we may eventually overflow
> the fixed-size buffer.
Good catch.
[...]
Show 6 quoted lines
> Though this is a stack overflow, I don't know that it's exploitable for
> anything interesting; an attacker does not get to write arbitrary data,
> but rather only a sequence of "^%d" and "~%d" relative history markers.
> Perhaps in theory one could devise a history such that the sequence
> markers spelled out some malicious code, but it would be quite a
> challenge
Overwrite the return address and return-to-libc?
[...]
> --- a/builtin/show-branch.c
> +++ b/builtin/show-branch.c
Very clean and obviously correct.  Thanks.
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
A test would be nice, though.

Hope that helps, Jonathan

Previous: Jeff KingNext: Jeff King
Message 2 of 3 in “show-branch: use strbuf instead of static buffer”
  1. show-branch: use strbuf instead of static bufferJeff King, Apr 5, 2013
  2. Jonathan NiederApr 5, 2013
  3. Jeff KingApr 6, 2013

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.