commit 67f8363f3dd874d199bbaae6971884914e2ba2d9 from: Stefan Sperling via: Thomas Adam date: Fri Jan 03 10:46:48 2025 UTC do not leak privsep_child memory allocations if sending a stop command fails commit - 9eeddf622bfd545f4b973b812e155640ef1d8e2c commit + 67f8363f3dd874d199bbaae6971884914e2ba2d9 blob - 21c1a7966d65512bb85fc73d1ec3d69722bd86a8 blob + e30ad0e702b5ba6ddb8b259f0ba7176fbf5e108b --- lib/pack.c +++ lib/pack.c @@ -811,19 +811,20 @@ done: static const struct got_error * pack_stop_privsep_child(struct got_pack *pack) { - const struct got_error *err = NULL, *close_err = NULL; + const struct got_error *err = NULL; + const struct got_error *close_err = NULL, *child_err = NULL; if (pack->privsep_child == NULL) return NULL; err = got_privsep_send_stop(pack->privsep_child->imsg_fd); - if (err) - return err; if (close(pack->privsep_child->imsg_fd) == -1) close_err = got_error_from_errno("close"); - err = got_privsep_wait_for_child(pack->privsep_child->pid); if (close_err && err == NULL) err = close_err; + child_err = got_privsep_wait_for_child(pack->privsep_child->pid); + if (child_err && err == NULL) + err = child_err; imsgbuf_clear(pack->privsep_child->ibuf); free(pack->privsep_child->ibuf); free(pack->privsep_child);