commit 0e07a2a181ad1663e726597758495e6b8010ba97 from: Omar Polo date: Mon Jun 13 20:57:43 2022 UTC free patch on error commit - 99b94ad7a7280ebcb23a103b28c81900bbe250ee commit + 0e07a2a181ad1663e726597758495e6b8010ba97 blob - 8555dfbb15f6eeaf0b1eaf4aada31bf6675208b9 blob + 4fe451ef47f5e8e2b15b5050994c294162827d96 --- lib/patch.c +++ lib/patch.c @@ -118,6 +118,9 @@ patch_free(struct got_patch *p) free(p->new); free(p->old); + + memset(p, 0, sizeof(*p)); + STAILQ_INIT(&p->head); } static const struct got_error * @@ -216,8 +219,10 @@ recv_patch(struct imsgbuf *ibuf, int *done, struct got char *t; err = got_privsep_recv_imsg(&imsg, ibuf, 0); - if (err) + if (err) { + patch_free(p); return err; + } switch (imsg.hdr.type) { case GOT_IMSG_PATCH_DONE: @@ -288,6 +293,9 @@ recv_patch(struct imsgbuf *ibuf, int *done, struct got } done: + if (err) + patch_free(p); + imsg_free(&imsg); return err; }