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

Re: Subject: Memory Leak vulnerability in reftable/readwrite_test.c

From
HZH Z <shiyuyuranzh@gmail.com>
Date
Mar 4, 2025, 07:39 UTC
Message-ID
<CAAJd+fZ_EK=ZZKptFjuumx2TLsdQ3s7WxTT+n_x3ARwZw23BCw@mail.gmail.com>
In-Reply-To
<20250304063329.GA1283445@coredump.intra.peff.net>
Very nice fix, thanks again for doing it!
Jeff King <peff@peff.net> 于2025年3月4日周二 14:33写道:
Show 45 quoted lines
>
> On Sat, Mar 01, 2025 at 12:31:33PM +0100, René Scharfe wrote:
>
> > --- >8 ---
> > Subject: [PATCH] reftable: release name on reftable_reader_new() error
> >
> > If block_source_read_block() or parse_footer() fail, we leak the "name"
> > member of struct reftable_reader in reftable_reader_new().  Release it.
> >
> > Reported by: H Z <shiyuyuranzh@gmail.com>
> > Signed-off-by: René Scharfe <l.s.r@web.de>
> > ---
> >  reftable/reader.c | 1 +
> >  1 file changed, 1 insertion(+)
> >
> > diff --git a/reftable/reader.c b/reftable/reader.c
> > index 3f2e4b2800..f38c83f140 100644
> > --- a/reftable/reader.c
> > +++ b/reftable/reader.c
> > @@ -666,6 +666,7 @@ int reftable_reader_new(struct reftable_reader **out,
> >       reftable_block_done(&footer);
> >       reftable_block_done(&header);
> >       if (err) {
> > +             reftable_free(r->name);
> >               reftable_free(r);
> >               block_source_close(source);
> >       }
>
> Coverity complains that "r" might be NULL here. At the top of the
> function we do:
>
>   REFTABLE_CALLOC_ARRAY(r, 1);
>   if (!r) {
>         err = REFTABLE_OUT_OF_MEMORY_ERROR;
>         goto done;
>   }
>
> and then the done label hits your new line (the "done:" is right above
> the context in your patch). And err of course is non-zero.
>
> So this probably needs an "if (r)", or multiple layered out-labels.  Or
> alternatively we could return directly when the first allocation fails,
> since there is nothing to clean up at that point.
>
> -Peff
Previous: Jeff KingNext: René Scharfe
Message 6 of 7 in “Subject: Memory Leak vulnerability in reftable/readwrite_test.c”
  1. H ZMar 1, 2025
  2. H ZMar 1, 2025
  3. René ScharfeMar 1, 2025
  4. H ZMar 1, 2025
  5. Jeff KingMar 4, 2025
  6. H ZMar 4, 2025
  7. reftable: release name on reftable_reader_new() errorRené Scharfe, Mar 4, 2025

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.