Download raw body.
relayd: check all return values
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) {
relayd: check all return values