commit 9880a1ddc7243c136989370185f03cf6bdc29051 from: Omar Polo via: Thomas Adam date: Thu Jun 23 14:09:34 2022 UTC free patch on error commit - ca357dd90579bd69da583a03adbb873b320e7c79 commit + 9880a1ddc7243c136989370185f03cf6bdc29051 blob - b5c27042841610fc959ed00b6037fbdb22a9237e blob + 84db9fc5c2fd74c46922594d621a895ec6c3bfcd --- lib/patch.c +++ lib/patch.c @@ -115,6 +115,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 * @@ -213,8 +216,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: @@ -285,6 +290,9 @@ recv_patch(struct imsgbuf *ibuf, int *done, struct got } done: + if (err) + patch_free(p); + imsg_free(&imsg); return err; }