commit 418ab141e444db9b7f3d7c2afc4351f7ef4bccfc from: claudio date: Thu Nov 21 13:38:45 2024 UTC Convert various reyk proc.c daemons over to new imsgbuf_init and imsgbuf_allow_fdpass. OK tb@ commit - a523d270f0229581bdb138c7324f3f7379f381b5 commit + 418ab141e444db9b7f3d7c2afc4351f7ef4bccfc blob - 828b83e8cdfc217f70dbc2254c5ed0b85b6544b9 blob + bd13efd1d9b723b2789de9fc9c43009781833929 --- control.c +++ control.c @@ -1,4 +1,4 @@ -/* $OpenBSD: control.c,v 1.63 2024/11/21 13:21:34 claudio Exp $ */ +/* $OpenBSD: control.c,v 1.64 2024/11/21 13:38:45 claudio Exp $ */ /* * Copyright (c) 2003, 2004 Henning Brauer @@ -159,12 +159,18 @@ control_accept(int listenfd, short event, void *arg) } if ((c = calloc(1, sizeof(struct ctl_conn))) == NULL) { - close(connfd); log_warn("%s: calloc", __func__); + close(connfd); return; } - imsgbuf_init(&c->iev.ibuf, connfd); + if (imsgbuf_init(&c->iev.ibuf, connfd) == -1) { + log_warn("%s: imsgbuf_init", __func__); + close(connfd); + free(c); + return; + } + c->iev.handler = control_dispatch_imsg; c->iev.events = EV_READ; c->iev.data = cs; /* proc.c cheats (reuses the handler) */ blob - 253a907ccc1c7f8abca601cb1c861b730c575b05 blob + 3eb00aa038150cbe68ef5a5c280d7fa6659e72db --- proc.c +++ proc.c @@ -1,4 +1,4 @@ -/* $OpenBSD: proc.c,v 1.51 2024/11/21 13:21:34 claudio Exp $ */ +/* $OpenBSD: proc.c,v 1.52 2024/11/21 13:38:45 claudio Exp $ */ /* * Copyright (c) 2010 - 2016 Reyk Floeter @@ -155,8 +155,10 @@ proc_connect(struct privsep *ps) for (inst = 0; inst < ps->ps_instances[dst]; inst++) { iev = &ps->ps_ievs[dst][inst]; - imsgbuf_init(&iev->ibuf, - ps->ps_pp->pp_pipes[dst][inst]); + if (imsgbuf_init(&iev->ibuf, + ps->ps_pp->pp_pipes[dst][inst]) == -1) + fatal("imsgbuf_init"); + imsgbuf_allow_fdpass(&iev->ibuf); event_set(&iev->ev, iev->ibuf.fd, iev->events, iev->handler, iev->data); event_add(&iev->ev, NULL); @@ -265,7 +267,9 @@ proc_accept(struct privsep *ps, int fd, enum privsep_p pp->pp_pipes[dst][n] = fd; iev = &ps->ps_ievs[dst][n]; - imsgbuf_init(&iev->ibuf, fd); + if (imsgbuf_init(&iev->ibuf, fd) == -1) + fatal("imsgbuf_init"); + imsgbuf_allow_fdpass(&iev->ibuf); event_set(&iev->ev, iev->ibuf.fd, iev->events, iev->handler, iev->data); event_add(&iev->ev, NULL); }