Align cmsgbuf to size_t to avoid unaligned memory access. (#19917)
vkalintiris committed
Mar 20, 2025 at 15:50 UTC
e81d0f18a882361733bc1ed960ae1f5d0c94e4b6
1 file changed
+3
-3
src/libnetdata/spawn_server/spawn_server_nofork.c
+3
-3
@@ -443,7 +443,7 @@ static bool spawn_server_is_running(const char *path) {
443
size_t dummy_size = 0;
444
SPAWN_INSTANCE_TYPE dummy_type = 0;
445
ND_UUID magic = UUID_ZERO;
446
- char cmsgbuf[CMSG_SPACE(sizeof(int))];
446
+ char cmsgbuf[CMSG_SPACE(sizeof(int))] __attribute__((aligned(sizeof(size_t))));
447
448
iov[0].iov_base = &msg_type;
449
iov[0].iov_len = sizeof(msg_type);
@@ -506,7 +506,7 @@ static bool spawn_server_send_request(ND_UUID *magic, SPAWN_REQUEST *request) {
506
struct msghdr msg = {0};
507
struct cmsghdr *cmsg;
508
SPAWN_SERVER_MSG msg_type = SPAWN_SERVER_MSG_REQUEST;
509
- char cmsgbuf[CMSG_SPACE(sizeof(int) * SPAWN_SERVER_TRANSFER_FDS)];
509
+ char cmsgbuf[CMSG_SPACE(sizeof(int) * SPAWN_SERVER_TRANSFER_FDS)] __attribute__((aligned(sizeof(size_t))));
510
struct iovec iov[11];
511
512
// We send 1 request with 10 iovec in it
@@ -587,7 +587,7 @@ static void spawn_server_receive_request(int sock, SPAWN_SERVER *server) {
587
size_t data_size;
588
ND_UUID magic = UUID_ZERO;
589
SPAWN_INSTANCE_TYPE type;
590
- char cmsgbuf[CMSG_SPACE(sizeof(int) * SPAWN_SERVER_TRANSFER_FDS)];
590
+ char cmsgbuf[CMSG_SPACE(sizeof(int) * SPAWN_SERVER_TRANSFER_FDS)] __attribute__((aligned(sizeof(size_t))));
591
char *envp_encoded = NULL, *argv_encoded = NULL, *data = NULL;
592
int stdin_fd = -1, stdout_fd = -1, stderr_fd = -1, custom_fd = -1;
593