File U_07-Use-safe_unpack32.patch of Package slurm.32296

From: Tim Wickberg <tim@schedmd.com>
Date: Tue Nov 28 17:38:50 2023 -0700
Subject: [PATCH 7/28]Use safe_unpack32().
Patch-mainline: Upstream
Git-repo: https://github.com/SchedMD/slurm
Git-commit: ba6d2fe6eb9bc83cb028887d972d91061b8361b7
References: bsc#1218046, bsc#1218050, bsc#1218051, bsc#1218053
Signed-off-by: Egbert Eich <eich@suse.de>

Initialize *valp to NULL to avoid potentially calling xfree() against
an uninitialized *valp value now that the first unpack can jump to
unpack_error.

Signed-off-by: Egbert Eich <eich@suse.com>
---
 src/common/pack.c | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/src/common/pack.c b/src/common/pack.c
index db3840f6b4..843fee9d85 100644
--- a/src/common/pack.c
+++ b/src/common/pack.c
@@ -525,8 +525,8 @@ void pack16_array(uint16_t * valp, uint32_t size_val, Buf buffer)
  */
 int unpack16_array(uint16_t ** valp, uint32_t * size_val, Buf buffer)
 {
-	if (unpack32(size_val, buffer))
-		return SLURM_ERROR;
+	*valp = NULL;
+	safe_unpack32(size_val, buffer);
 	if ((*size_val) > MAX_ARRAY_LEN_MEDIUM)
 		return SLURM_ERROR;
 
@@ -561,8 +561,8 @@ void pack32_array(uint32_t * valp, uint32_t size_val, Buf buffer)
  */
 int unpack32_array(uint32_t ** valp, uint32_t * size_val, Buf buffer)
 {
-	if (unpack32(size_val, buffer))
-		return SLURM_ERROR;
+	*valp = NULL;
+	safe_unpack32(size_val, buffer);
 	if ((*size_val) > MAX_ARRAY_LEN_LARGE)
 		return SLURM_ERROR;
 
@@ -613,8 +613,8 @@ void pack64_array_as_32(uint64_t * valp, uint32_t size_val, Buf buffer)
  */
 int unpack64_array(uint64_t ** valp, uint32_t * size_val, Buf buffer)
 {
-	if (unpack32(size_val, buffer))
-		return SLURM_ERROR;
+	*valp = NULL;
+	safe_unpack32(size_val, buffer);
 	if ((*size_val) > MAX_ARRAY_LEN_MEDIUM)
 		return SLURM_ERROR;
 
@@ -665,8 +665,8 @@ void packdouble_array(double *valp, uint32_t size_val, Buf buffer)
 
 int unpackdouble_array(double **valp, uint32_t* size_val, Buf buffer)
 {
-	if (unpack32(size_val, buffer))
-		return SLURM_ERROR;
+	*valp = NULL;
+	safe_unpack32(size_val, buffer);
 	if ((*size_val) > MAX_ARRAY_LEN_SMALL)
 		return SLURM_ERROR;
 
@@ -695,8 +695,8 @@ void packlongdouble_array(long double *valp, uint32_t size_val, Buf buffer)
 
 int unpacklongdouble_array(long double **valp, uint32_t* size_val, Buf buffer)
 {
-	if (unpack32(size_val, buffer))
-		return SLURM_ERROR;
+	*valp = NULL;
+	safe_unpack32(size_val, buffer);
 	if ((*size_val) > MAX_ARRAY_LEN_SMALL)
 		return SLURM_ERROR;
 
openSUSE Build Service is sponsored by