Download raw body.
privsep.c memory leak
Thanks Omar! Should we try and catch and return those errors? -Kyle > On Nov 18, 2023, at 2:16 AM, Omar Polo <op@omarpolo.com> wrote: > > On 2023/11/18 00:48:43 -0600, Kyle Ackerman <kackerman0102@gmail.com> wrote: >> Here is a diff for lib/privsep.c that fixes a memory leak spotted by >> Omar. Any suggestions? > > Seems correct to me, thank you! > > Two nitpics: > > - we use tabs (8 columns) instead of spaces for indentations > >> [...] >> datalen = imsg.hdr.len - IMSG_HEADER_SIZE; >> if (imsg.hdr.type == GOT_IMSG_COMMIT_PAINTING_DONE) >> break; > > - here it leaks too. I've added an imsg_free() call here too before > committing. > > > Reviewing your diff I've also spotted another small issue: > > 3540 for (i = 0; i < icommits.ncommits; i++) { > .... > 3545 if (icommits.present_in_pack) { > .... > 3548 err = cb(cb_arg, &id, icommit.color); > 3549 if (err) > 3550 break; > > err is set here > > 3551 } else { > 3552 struct got_object_qid *qid; > 3553 err = got_object_qid_alloc_partial(&qid); > 3554 if (err) > 3555 break; > > and here too > > .... > 3562 > 3563 imsg_free(&imsg); > 3564 } > > but then is ignored since we continue looping. > > diff /home/op/w/got > commit - 6d0030ba1d9985fc8b8a9a2dc0f0c412c2c678da > path + /home/op/w/got > blob - 2109bc13bcb9c7dbfb07021a640c5fa125e74954 > file + lib/privsep.c > --- lib/privsep.c > +++ lib/privsep.c > @@ -3518,7 +3518,7 @@ got_privsep_recv_painted_commits(struct got_object_id_ > datalen = imsg.hdr.len - IMSG_HEADER_SIZE; > if (imsg.hdr.type == GOT_IMSG_COMMIT_PAINTING_DONE) { > imsg_free(&imsg); > - break; > + return NULL; > } > if (imsg.hdr.type != GOT_IMSG_PAINTED_COMMITS){ > imsg_free(&imsg); > @@ -3561,9 +3561,9 @@ got_privsep_recv_painted_commits(struct got_object_id_ > } > > imsg_free(&imsg); > + if (err) > + return err; > } > - > - return err; > } > > const struct got_error *
privsep.c memory leak