From: Mike Yuan Date: Tue, 28 May 2024 02:41:37 +0000 (+0800) Subject: socket-util: use GREEDY_REALLOC_APPEND where appropriate X-Git-Tag: v256-rc4~104 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1e1df052964ecf12467ba2dc78b0b0f87524a5aa;p=thirdparty%2Fsystemd.git 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. --- 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) {