From: Omar Polo Subject: Re: fix some fd leaks in error paths and avoid some double close To: Stefan Sperling Cc: gameoftrees@openbsd.org Date: Fri, 03 Nov 2023 15:48:45 +0100 On 2023/11/03 11:01:50 +0100, Stefan Sperling wrote: > On Thu, Oct 26, 2023 at 09:20:13AM +0200, Omar Polo wrote: > > Should we also start to use ibuf_fd_set() instead of > > reaching into the struct? > > Sure, why not. Then the diff would be this. I'm not particularly compelled to commit it, since the main interesting thing about ibuf_fd_set() seems to be that it closes the the previous fd passed (if any). Here we always create a fresh ibuf and send it. diff /home/op/w/got commit - ac4f092c7c8e090ee733c90b8b0f0274872c8662 path + /home/op/w/got blob - 7d479df74800ae6ac1809d68db5f4d54482efd23 file + lib/privsep.c --- lib/privsep.c +++ lib/privsep.c @@ -419,7 +419,7 @@ got_privsep_send_tree_req(struct imsgbuf *ibuf, int fd } } - wbuf->fd = fd; + ibuf_fd_set(wbuf, fd); imsg_close(ibuf, wbuf); return flush_imsg(ibuf); @@ -612,7 +612,7 @@ got_privsep_send_fetch_req(struct imsgbuf *ibuf, int f return err; } } - wbuf->fd = fd; + ibuf_fd_set(wbuf, fd); fd = -1; imsg_close(ibuf, wbuf);