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

Re: git segfaults on older Solaris releases

From
Tom G. Christensen <tgc@jupiterrise.com>
Date
Apr 7, 2016, 18:58 UTC
Message-ID
<5706ADC1.7030709@jupiterrise.com>
In-Reply-To
<xmqqoa9lz2uw.fsf@gitster.mtv.corp.google.com>
On 07/04/16 20:32, Junio C Hamano wrote:
Show 14 quoted lines
> "Tom G. Christensen" <tgc@jupiterrise.com> writes:
>
>> The reason for the crash is simple, a null value was passed to the 's'
>> format for the *printf family of functions.
>> ...
>> Passing a null value to the 's' format is explicitly documented as
>> giving undefined results on Solaris, even on Solaris 11(2).
>
> Do you mean
>
> 	*printf("...%.*s...", ..., 0, NULL, ...)
>
> i.e. you saw a NULL passed only when we use %.*s with width=0?
>
Maybe? Not sure what you're asking exactly.

I'm seing what is in the backtrace from gdb and that is prefix is NULL (0x0) which ends up being printed using some variant of '%s' after going through the various wrappers.

I hacked around it in run_builtin() as a proof and have also made some experiments with working around it in setup_git_directory_gently() which got me a bit further but it looks like there are places that do if(prefix) which now does not behave as expected because prefix is not NULL.

-tgc
Previous: Patrick Steinhardt
Message 17 of 17 in “git segfaults on older Solaris releases”
  1. Tom G. ChristensenApr 7, 2016
  2. Junio C HamanoApr 7, 2016
  3. Junio C HamanoApr 7, 2016
  4. David TurnerApr 7, 2016
  5. Jeff KingApr 7, 2016
  6. Junio C HamanoApr 7, 2016
  7. Jeff KingApr 7, 2016
  8. Tom G. ChristensenApr 7, 2016
  9. Tom G. ChristensenApr 9, 2016
  10. Jeff KingApr 9, 2016
  11. 1/3 config: lower-case first word of error stringsJeff King, Apr 9, 2016
  12. 2/3 git_config_set_multivar_in_file: all non-zero returns are errorsJeff King, Apr 9, 2016
  13. 3/3 git_config_set_multivar_in_file: handle "unset" errorsJeff King, Apr 9, 2016
  14. Tom G. ChristensenApr 9, 2016
  15. Jeff KingApr 9, 2016
  16. Patrick SteinhardtApr 12, 2016
  17. Tom G. ChristensenApr 7, 2016

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.