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

[PATCH 0/4] use xmalloc in more places

From
Jeff King <peff@peff.net>
Date
Apr 11, 2019, 13:47 UTC
Message-ID
<20190411134736.GA28543@sigill.intra.peff.net>

It was reported on the Git security list that there are a few spots which use a bare malloc() but don't check the return value, which could dereference NULL. I don't think any of these are exploitable in an interesting way, beyond Git just segfaulting more or less immediately.

But we should still be handling failures, and I think it makes sense to be consistent about how we do it (and the other rules which come with using xmalloc, like GIT_ALLOC_LIMIT).

This series cleans up most of the bare calls found by:
  git grep -E '[^a-z_](m|c|re)alloc\(' '*.c' :^compat :^contrib :^wrapper.c
The calls I've left are:
  - wrapper.c obviously needs to call the real functions :)
  - compat/ has functions emulating libc and system calls, and which are
    expected to return ENOMEM as appropriate
  - diff-delta will gracefully return NULL when trying to delta
    something too large, and pack-objects will skip past trying to find
    a delta. I've never seen this happen in practice, but then I
    primarily use Linux which is more than happy to overcommit on
    malloc(). I've left it unchanged, though possibly we could have an
    xmalloc_gently() if we want to enforce things like GIT_ALLOC_LIMIT
    but still do the graceful fallback thing.
  - test-hash tries to probe malloc() to see how big a buffer it can
    allocate. I doubt this even does anything useful on systems like
    Linux that overcommit. We also don't seem to ever invoke this with a
    buffer larger than 8k in the first place. So it could maybe go away
    entirely, but I left it here.
  [1/4]: test-prio-queue: use xmalloc
  [2/4]: xdiff: use git-compat-util
  [3/4]: xdiff: use xmalloc/xrealloc
  [4/4]: progress: use xmalloc/xcalloc
 progress.c                 | 18 +++++-------------
 t/helper/test-prio-queue.c |  2 +-
 xdiff/xdiff.h              |  4 ++--
 xdiff/xinclude.h           |  8 +-------
 4 files changed, 9 insertions(+), 23 deletions(-)
Next: Jeff King
Message 1 of 9 in “use xmalloc in more places”
  1. 0/4 use xmalloc in more placesJeff King, Apr 11, 2019
  2. 1/4 test-prio-queue: use xmallocJeff King, Apr 11, 2019
  3. 2/4 xdiff: use git-compat-utilJeff King, Apr 11, 2019
  4. 3/4 xdiff: use xmalloc/xreallocJeff King, Apr 11, 2019
  5. 4/4 progress: use xmalloc/xcallocJeff King, Apr 11, 2019
  6. Taylor BlauApr 11, 2019
  7. Jeff KingApr 11, 2019
  8. Taylor BlauApr 11, 2019
  9. Jeff KingApr 11, 2019

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.