File U_16-Use-try_xmalloc-on-user-specified-buffer-sizes.patch of Package slurm.32296
From: Tim Wickberg <tim@schedmd.com>
Date: Wed Nov 29 14:34:06 2023 -0700
Subject: [PATCH 16/28]Use try_xmalloc() on user-specified buffer sizes.
Patch-mainline: Upstream
Git-repo: https://github.com/SchedMD/slurm
Git-commit: 1602f00da24e25a348bdb4acbc2e0a54a55bd4bf
References: bsc#1218046, bsc#1218050, bsc#1218051, bsc#1218053
Signed-off-by: Egbert Eich <eich@suse.de>
---
src/common/slurm_protocol_api.c | 2 +-
src/common/slurm_protocol_socket.c | 3 ++-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/common/slurm_protocol_api.c b/src/common/slurm_protocol_api.c
index a727f7e94b..a41f984108 100644
--- a/src/common/slurm_protocol_api.c
+++ b/src/common/slurm_protocol_api.c
@@ -2017,7 +2017,7 @@ extern int slurm_unpack_addr_array(slurm_addr_t **addr_array_ptr,
slurm_addr_t *addr_array = NULL;
safe_unpack32(size_val, buffer);
- addr_array = xcalloc(*size_val, sizeof(slurm_addr_t));
+ safe_xcalloc(addr_array, *size_val, sizeof(slurm_addr_t));
for (int i = 0; i < *size_val; i++) {
if (slurm_unpack_addr_no_alloc(&addr_array[i], buffer))
diff --git a/src/common/slurm_protocol_socket.c b/src/common/slurm_protocol_socket.c
index 9143e53ca8..7823b71c3f 100644
--- a/src/common/slurm_protocol_socket.c
+++ b/src/common/slurm_protocol_socket.c
@@ -149,7 +149,8 @@ extern ssize_t slurm_msg_recvfrom_timeout(int fd, char **pbuf, size_t *lenp,
/*
* Allocate memory on heap for message
*/
- *pbuf = xmalloc_nz(msglen);
+ if (!(*pbuf = try_xmalloc(msglen)))
+ slurm_seterrno_ret(ENOMEM);
if (slurm_recv_timeout(fd, *pbuf, msglen, 0, tmout) != msglen) {
xfree(*pbuf);