Message ID | fa6ccb9f-11cd-7eec-fdbb-2de6a0bfcecf@web.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | sha1-file: release strbuf after use | expand |
On Wed, Aug 07, 2019 at 01:15:25PM +0200, René Scharfe wrote: > Signed-off-by: René Scharfe <l.s.r@web.de> > --- > Patch generated with --function-context for easier review. > > The plugged leak was added by a10a17877b (for_each_alternate_ref: > replace transport code with for-each-ref, 2017-02-08) and showed up in > 709dfa6990 (object-store.h: move for_each_alternate_ref() from > transport.h, 2019-07-01), where it caught my eye, belatedly. Thanks, the patch obviously looks good (though I wouldn't be sad for some of your digging above to go into the commit message). I had a vague feeling that we had seen this particular leak before (and presumably the fix fell through the cracks). But I couldn't find it on the list. I think after a while these strbuf_getline() leaks all start to look the same. :) -Peff
On 8/7/2019 7:15 AM, René Scharfe wrote: > Signed-off-by: René Scharfe <l.s.r@web.de> > --- > Patch generated with --function-context for easier review. Thanks again. LGTM. -Stolee
diff --git a/sha1-file.c b/sha1-file.c index 84fd02f107..487ea35d2d 100644 --- a/sha1-file.c +++ b/sha1-file.c @@ -773,32 +773,33 @@ static void fill_alternate_refs_command(struct child_process *cmd, static void read_alternate_refs(const char *path, alternate_ref_fn *cb, void *data) { struct child_process cmd = CHILD_PROCESS_INIT; struct strbuf line = STRBUF_INIT; FILE *fh; fill_alternate_refs_command(&cmd, path); if (start_command(&cmd)) return; fh = xfdopen(cmd.out, "r"); while (strbuf_getline_lf(&line, fh) != EOF) { struct object_id oid; const char *p; if (parse_oid_hex(line.buf, &oid, &p) || *p) { warning(_("invalid line while parsing alternate refs: %s"), line.buf); break; } cb(&oid, data); } fclose(fh); finish_command(&cmd); + strbuf_release(&line); } struct alternate_refs_data {
Signed-off-by: René Scharfe <l.s.r@web.de> --- Patch generated with --function-context for easier review. The plugged leak was added by a10a17877b (for_each_alternate_ref: replace transport code with for-each-ref, 2017-02-08) and showed up in 709dfa6990 (object-store.h: move for_each_alternate_ref() from transport.h, 2019-07-01), where it caught my eye, belatedly. sha1-file.c | 1 + 1 file changed, 1 insertion(+) -- 2.22.0