Download raw body.
relayd: use imsg_get_type and imsg_get_type
OK?
commit 0b7c23a563ac96506f78c660a431a3e3d6f2d020
Author: Rafael Sadowski <rafael@sizeofvoid.org>
Date: Sat Jul 25 19:20:21 2026 +0200
relayd: use imsg_get_type and imsg_get_type
diff --git a/hce.c b/hce.c
index 82f3003..05c1555 100644
--- a/hce.c
+++ b/hce.c
@@ -291,7 +291,8 @@ hce_dispatch_pfe(int fd, struct privsep_proc *p, struct imsg *imsg)
switch (imsg_get_type(imsg)) {
case IMSG_HOST_DISABLE:
- memcpy(&id, imsg->data, sizeof(id));
+ if (imsg_get_data(imsg, &id, sizeof(id)) == -1)
+ return (-1);
if ((host = host_find(env, id)) == NULL)
fatalx("%s: desynchronized", __func__);
host->flags |= F_DISABLE;
@@ -301,7 +302,8 @@ hce_dispatch_pfe(int fd, struct privsep_proc *p, struct imsg *imsg)
host->he = HCE_NONE;
break;
case IMSG_HOST_ENABLE:
- memcpy(&id, imsg->data, sizeof(id));
+ if (imsg_get_data(imsg, &id, sizeof(id)) == -1)
+ return (-1);
if ((host = host_find(env, id)) == NULL)
fatalx("%s: desynchronized", __func__);
host->flags &= ~(F_DISABLE);
@@ -309,7 +311,8 @@ hce_dispatch_pfe(int fd, struct privsep_proc *p, struct imsg *imsg)
host->he = HCE_NONE;
break;
case IMSG_TABLE_DISABLE:
- memcpy(&id, imsg->data, sizeof(id));
+ if (imsg_get_data(imsg, &id, sizeof(id)) == -1)
+ return (-1);
if ((table = table_find(env, id)) == NULL)
fatalx("%s: desynchronized", __func__);
table->conf.flags |= F_DISABLE;
@@ -317,7 +320,8 @@ hce_dispatch_pfe(int fd, struct privsep_proc *p, struct imsg *imsg)
host->up = HOST_UNKNOWN;
break;
case IMSG_TABLE_ENABLE:
- memcpy(&id, imsg->data, sizeof(id));
+ if (imsg_get_data(imsg, &id, sizeof(id)) == -1)
+ return (-1);
if ((table = table_find(env, id)) == NULL)
fatalx("%s: desynchronized", __func__);
table->conf.flags &= ~(F_DISABLE);
diff --git a/relay.c b/relay.c
index 412ae74..58e57b7 100644
--- a/relay.c
+++ b/relay.c
@@ -1870,7 +1870,8 @@ relay_dispatch_pfe(int fd, struct privsep_proc *p, struct imsg *imsg)
switch (imsg_get_type(imsg)) {
case IMSG_HOST_DISABLE:
- memcpy(&id, imsg->data, sizeof(id));
+ if (imsg_get_data(imsg, &id, sizeof(id)) == -1)
+ return (-1);
if ((host = host_find(env, id)) == NULL)
fatalx("%s: desynchronized", __func__);
if ((table = table_find(env, host->conf.tableid)) ==
@@ -1882,14 +1883,16 @@ relay_dispatch_pfe(int fd, struct privsep_proc *p, struct imsg *imsg)
host->up = HOST_UNKNOWN;
break;
case IMSG_HOST_ENABLE:
- memcpy(&id, imsg->data, sizeof(id));
+ if (imsg_get_data(imsg, &id, sizeof(id)) == -1)
+ return (-1);
if ((host = host_find(env, id)) == NULL)
fatalx("%s: desynchronized", __func__);
host->flags &= ~(F_DISABLE);
host->up = HOST_UNKNOWN;
break;
case IMSG_TABLE_DISABLE:
- memcpy(&id, imsg->data, sizeof(id));
+ if (imsg_get_data(imsg, &id, sizeof(id)) == -1)
+ return (-1);
if ((table = table_find(env, id)) == NULL)
fatalx("%s: desynchronized", __func__);
table->conf.flags |= F_DISABLE;
@@ -1898,7 +1901,8 @@ relay_dispatch_pfe(int fd, struct privsep_proc *p, struct imsg *imsg)
host->up = HOST_UNKNOWN;
break;
case IMSG_TABLE_ENABLE:
- memcpy(&id, imsg->data, sizeof(id));
+ if (imsg_get_data(imsg, &id, sizeof(id)) == -1)
+ return (-1);
if ((table = table_find(env, id)) == NULL)
fatalx("%s: desynchronized", __func__);
table->conf.flags &= ~(F_DISABLE);
@@ -1939,7 +1943,8 @@ relay_dispatch_pfe(int fd, struct privsep_proc *p, struct imsg *imsg)
host->up = st.up;
break;
case IMSG_NATLOOK:
- bcopy(imsg->data, &cnl, sizeof(cnl));
+ if (imsg_get_data(imsg, &cnl, sizeof(cnl)) == -1)
+ return (-1);
if ((con = session_find(env, cnl.id)) == NULL ||
con->se_cnl == NULL) {
log_debug("%s: session %d: expired",
@@ -2001,7 +2006,8 @@ relay_dispatch_parent(int fd, struct privsep_proc *p, struct imsg *imsg)
switch (imsg_get_type(imsg)) {
case IMSG_BINDANY:
- bcopy(imsg->data, &id, sizeof(id));
+ if (imsg_get_data(imsg, &id, sizeof(id)) == -1)
+ return (-1);
if ((con = session_find(env, id)) == NULL) {
log_debug("%s: session %d: expired",
__func__, id);
diff --git a/relayd.c b/relayd.c
index 7b8af3b..b174fc8 100644
--- a/relayd.c
+++ b/relayd.c
@@ -407,7 +407,7 @@ parent_dispatch_pfe(int fd, struct privsep_proc *p, struct imsg *imsg)
char *str = NULL;
size_t s;
- switch (imsg->hdr.type) {
+ switch (imsg_get_type(imsg)) {
case IMSG_DEMOTE:
if (imsg_get_data(imsg, &demote, sizeof(demote)) == -1) {
log_warn("%s: imsg_get_data", __func__);
@@ -469,7 +469,7 @@ parent_dispatch_hce(int fd, struct privsep_proc *p, struct imsg *imsg)
struct relayd *env = ps->ps_env;
struct ctl_script scr;
- switch (imsg->hdr.type) {
+ switch (imsg_get_type(imsg)) {
case IMSG_SCRIPT:
if (imsg_get_data(imsg, &scr, sizeof(scr)) == -1) {
log_warn("%s: imsg_get_data", __func__);
@@ -498,7 +498,7 @@ parent_dispatch_relay(int fd, struct privsep_proc *p, struct imsg *imsg)
struct ctl_bindany bnd;
int s;
- switch (imsg->hdr.type) {
+ switch (imsg_get_type(imsg)) {
case IMSG_BINDANY:
if (imsg_get_data(imsg, &bnd, sizeof(bnd)) == -1) {
log_warn("%s: imsg_get_data", __func__);
@@ -537,7 +537,7 @@ parent_dispatch_ca(int fd, struct privsep_proc *p, struct imsg *imsg)
struct privsep *ps = p->p_ps;
struct relayd *env = ps->ps_env;
- switch (imsg->hdr.type) {
+ switch (imsg_get_type(imsg)) {
case IMSG_CFG_DONE:
parent_configure_done(env);
break;
relayd: use imsg_get_type and imsg_get_type