From 1e1df052964ecf12467ba2dc78b0b0f87524a5aa Mon Sep 17 00:00:00 2001 From: Mike Yuan Date: Tue, 28 May 2024 10:41:37 +0800 Subject: [PATCH] socket-util: use GREEDY_REALLOC_APPEND where appropriate Also, previously GREEDY_REALLOC was used improperly, causing the fds_array to be leaked when realloc() fails. --- src/basic/socket-util.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/basic/socket-util.c b/src/basic/socket-util.c index e66bc426a4d..6e304e840d2 100644 --- a/src/basic/socket-util.c +++ b/src/basic/socket-util.c @@ -1112,14 +1112,10 @@ ssize_t receive_many_fds_iov( if (cmsg->cmsg_level == SOL_SOCKET && cmsg->cmsg_type == SCM_RIGHTS) { size_t n = (cmsg->cmsg_len - CMSG_LEN(0)) / sizeof(int); - fds_array = GREEDY_REALLOC(fds_array, n_fds_array + n); - if (!fds_array) { + if (!GREEDY_REALLOC_APPEND(fds_array, n_fds_array, CMSG_TYPED_DATA(cmsg, int), n)) { cmsg_close_all(&mh); return -ENOMEM; } - - memcpy(fds_array + n_fds_array, CMSG_TYPED_DATA(cmsg, int), sizeof(int) * n); - n_fds_array += n; } if (n_fds_array == 0) {