commit d1d263eac7f7f573e50efe916ebdb779ced7f247 from: Omar Polo via: Thomas Adam date: Wed Nov 22 22:48:01 2023 UTC gotwebd: inline and remove IMSG_SIZE_CHECK() I always find confusing if IMSG_SIZE_CHECK() takes pointers or not, and we had at least a few instances of wrong usages, so inline (with exact size checks) and remove the macro. ok stsp@ commit - ab5bda7ecb7748b16898b3af71948dc94ce96296 commit + d1d263eac7f7f573e50efe916ebdb779ced7f247 blob - 479f4639051bdda4d60bc7cf7e8a2684fffb6429 blob + ea73156a5b244c30f54ef2bed294fedfef0ba589 --- gotwebd/config.c +++ gotwebd/config.c @@ -80,7 +80,8 @@ config_getserver(struct gotwebd *env, struct imsg *ims if (srv == NULL) fatalx("%s: calloc", __func__); - IMSG_SIZE_CHECK(imsg, srv); + if (IMSG_DATA_SIZE(imsg) != sizeof(*srv)) + fatalx("%s: wrong size", __func__); memcpy(srv, p, sizeof(*srv)); @@ -117,7 +118,9 @@ config_getsock(struct gotwebd *env, struct imsg *imsg) uint8_t *p = imsg->data; int i; - IMSG_SIZE_CHECK(imsg, &sock_conf); + if (IMSG_DATA_SIZE(imsg) != sizeof(sock_conf)) + fatalx("%s: wrong size", __func__); + memcpy(&sock_conf, p, sizeof(sock_conf)); if (IMSG_DATA_SIZE(imsg) != sizeof(sock_conf)) { @@ -192,7 +195,9 @@ config_getfd(struct gotwebd *env, struct imsg *imsg) uint8_t *p = imsg->data; int sock_id, match = 0, i; - IMSG_SIZE_CHECK(imsg, &sock_id); + if (IMSG_DATA_SIZE(imsg) != sizeof(sock_id)) + fatalx("%s: wrong size", __func__); + memcpy(&sock_id, p, sizeof(sock_id)); TAILQ_FOREACH(sock, &env->sockets, entry) { blob - b1ce8d623d39d6ff2faaf210c67f7020e0d4dda5 blob + 5cc80cef226f35b18328aff9d58e25581e26d9e0 --- gotwebd/gotwebd.h +++ gotwebd/gotwebd.h @@ -139,11 +139,6 @@ struct imsgev { short events; }; -#define IMSG_SIZE_CHECK(imsg, p) do { \ - if (IMSG_DATA_SIZE(imsg) < sizeof(*p)) \ - fatalx("bad length imsg received (%s)", #p); \ -} while (0) - #define IMSG_DATA_SIZE(imsg) ((imsg)->hdr.len - IMSG_HEADER_SIZE) struct env_val {