From: Rafael Sadowski Subject: relayd: check all return values To: tech@openbsd.org Date: Sun, 19 Jul 2026 07:43:12 +0200 OK? diff --git a/ca.c b/ca.c index 6ce8626..8362c8b 100644 --- a/ca.c +++ b/ca.c @@ -195,19 +195,23 @@ ca_dispatch_parent(int fd, struct privsep_proc *p, struct imsg *imsg) { switch (imsg_get_type(imsg)) { case IMSG_CFG_RELAY: - config_getrelay(env, imsg); + if (config_getrelay(env, imsg) != 0) + return (-1); break; case IMSG_CFG_RELAY_FD: - config_getrelayfd(env, imsg); + if (config_getrelayfd(env, imsg) != 0) + return (-1); break; case IMSG_CFG_DONE: - config_getcfg(env, imsg); + if (config_getcfg(env, imsg) != 0) + return (-1); break; case IMSG_CTL_START: ca_launch(); break; case IMSG_CTL_RESET: - config_getreset(env, imsg); + if (config_getreset(env, imsg) != 0) + return (-1); break; default: return -1; diff --git a/hce.c b/hce.c index 6c14083..924d04d 100644 --- a/hce.c +++ b/hce.c @@ -349,19 +349,23 @@ hce_dispatch_parent(int fd, struct privsep_proc *p, struct imsg *imsg) script_done(env, &scr); break; case IMSG_CFG_TABLE: - config_gettable(env, imsg); + if (config_gettable(env, imsg) != 0) + return (-1); break; case IMSG_CFG_HOST: - config_gethost(env, imsg); + if (config_gethost(env, imsg) != 0) + return (-1); break; case IMSG_CFG_DONE: - config_getcfg(env, imsg); + if (config_getcfg(env, imsg) != 0) + return (-1); break; case IMSG_CTL_START: hce_setup_events(); break; case IMSG_CTL_RESET: - config_getreset(env, imsg); + if (config_getreset(env, imsg) != 0) + return (-1); break; default: return (-1); diff --git a/pfe.c b/pfe.c index 82825f7..f3c6188 100644 --- a/pfe.c +++ b/pfe.c @@ -201,34 +201,44 @@ pfe_dispatch_parent(int fd, struct privsep_proc *p, struct imsg *imsg) { switch (imsg_get_type(imsg)) { case IMSG_CFG_TABLE: - config_gettable(env, imsg); + if (config_gettable(env, imsg) != 0) + return (-1); break; case IMSG_CFG_HOST: - config_gethost(env, imsg); + if (config_gethost(env, imsg) != 0) + return (-1); break; case IMSG_CFG_RDR: - config_getrdr(env, imsg); + if (config_getrdr(env, imsg) != 0) + return (-1); break; case IMSG_CFG_VIRT: - config_getvirt(env, imsg); + if (config_getvirt(env, imsg) != 0) + return (-1); break; case IMSG_CFG_ROUTER: - config_getrt(env, imsg); + if (config_getrt(env, imsg) != 0) + return (-1); break; case IMSG_CFG_ROUTE: - config_getroute(env, imsg); + if (config_getroute(env, imsg) != 0) + return (-1); break; case IMSG_CFG_PROTO: - config_getproto(env, imsg); + if (config_getproto(env, imsg) != 0) + return (-1); break; case IMSG_CFG_RELAY: - config_getrelay(env, imsg); + if (config_getrelay(env, imsg) != 0) + return (-1); break; case IMSG_CFG_RELAY_TABLE: - config_getrelaytable(env, imsg); + if (config_getrelaytable(env, imsg) != 0) + return (-1); break; case IMSG_CFG_DONE: - config_getcfg(env, imsg); + if (config_getcfg(env, imsg) != 0) + return (-1); init_tables(env); agentx_init(env); break; @@ -237,7 +247,8 @@ pfe_dispatch_parent(int fd, struct privsep_proc *p, struct imsg *imsg) pfe_sync(); break; case IMSG_CTL_RESET: - config_getreset(env, imsg); + if (config_getreset(env, imsg) != 0) + return (-1); break; case IMSG_AGENTXSOCK: agentx_getsock(imsg); diff --git a/relay.c b/relay.c index 2f6ec5d..d0ad35d 100644 --- a/relay.c +++ b/relay.c @@ -2014,34 +2014,43 @@ relay_dispatch_parent(int fd, struct privsep_proc *p, struct imsg *imsg) evtimer_add(&con->se_ev, &tv); break; case IMSG_CFG_TABLE: - config_gettable(env, imsg); + if (config_gettable(env, imsg) != 0) + return (-1); break; case IMSG_CFG_HOST: - config_gethost(env, imsg); + if (config_gethost(env, imsg) != 0) + return (-1); break; case IMSG_CFG_PROTO: - config_getproto(env, imsg); + if (config_getproto(env, imsg) != 0) + return (-1); break; case IMSG_CFG_RULE: - config_getrule(env, imsg); + if (config_getrule(env, imsg) != 0) + return (-1); break; case IMSG_CFG_RELAY: - config_getrelay(env, imsg); + if (config_getrelay(env, imsg) != 0) + return (-1); break; case IMSG_CFG_RELAY_TABLE: - config_getrelaytable(env, imsg); + if (config_getrelaytable(env, imsg) != 0) + return (-1); break; case IMSG_CFG_RELAY_FD: - config_getrelayfd(env, imsg); + if (config_getrelayfd(env, imsg) != 0) + return (-1); break; case IMSG_CFG_DONE: - config_getcfg(env, imsg); + if (config_getcfg(env, imsg) != 0) + return (-1); break; case IMSG_CTL_START: relay_launch(); break; case IMSG_CTL_RESET: - config_getreset(env, imsg); + if (config_getreset(env, imsg) != 0) + return (-1); break; case IMSG_TLSTICKET_REKEY: if (imsg_get_data(imsg, &env->sc_ticket, diff --git a/relayd.c b/relayd.c index 7e3e6cc..64c3bec 100644 --- a/relayd.c +++ b/relayd.c @@ -414,7 +414,8 @@ parent_dispatch_pfe(int fd, struct privsep_proc *p, struct imsg *imsg) return (-1); } demote.group[sizeof(demote.group) - 1] = '\0'; - carp_demote_set(demote.group, demote.level); + if (carp_demote_set(demote.group, demote.level) != 0) + return (-1); break; case IMSG_RTMSG: if (imsg_get_data(imsg, &crt, sizeof(crt)) == -1) { @@ -424,7 +425,8 @@ parent_dispatch_pfe(int fd, struct privsep_proc *p, struct imsg *imsg) crt.host.name[sizeof(crt.host.name) - 1] = '\0'; crt.rt.name[sizeof(crt.rt.name) - 1] = '\0'; crt.rt.label[sizeof(crt.rt.label) - 1] = '\0'; - pfe_route(env, &crt); + if (pfe_route(env, &crt) != 0) + return (-1); break; case IMSG_CTL_RESET: if (imsg_get_data(imsg, &v, sizeof(v)) == -1) {