From 95d07ba00ab6249507235f33846fe6abe1a2b74c Mon Sep 17 00:00:00 2001
From: Moe Jette <jette1@llnl.gov>
Date: Fri, 5 Jul 2002 19:04:34 +0000
Subject: [PATCH] Fix bug in unpack array code

---
 src/common/pack.c                | 13 +++++++------
 src/common/slurm_protocol_pack.c | 13 ++++++-------
 2 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/src/common/pack.c b/src/common/pack.c
index 92c42ebaf2d..976a11efde6 100644
--- a/src/common/pack.c
+++ b/src/common/pack.c
@@ -53,25 +53,26 @@ void
 _pack32array(uint32_t *valp, uint16_t size_val, void **bufp, int *lenp)
 {
 	int i=0;
-	uint16_t nl = htons(size_val);
-	_pack16( nl, bufp, lenp );
+
+	_pack16( size_val, bufp, lenp );
 
 	for ( i=0; i < size_val; i++ ) {
 		_pack32( *(valp + i ), bufp, lenp );
 	}
 }
 
-/* Given a int ptr, it will pack an array of size_val
+/* Given a int ptr, it will unpack an array of size_val
  */
 void
 _unpack32array( uint32_t **valp, uint16_t* size_val, void **bufp, int *lenp)
 {
 	int i=0;
+
 	_unpack16( size_val, bufp, lenp );
-	valp = xmalloc( (*size_val) * sizeof( uint32_t ) );
-	
+	*valp = xmalloc( (*size_val) * sizeof( uint32_t ) );
+
 	for ( i=0; i < *size_val; i++ ) {
-		_unpack32( (*valp) + i , bufp, lenp );
+		_unpack32( (*valp) + i , bufp, lenp ); 
 	}
 }	
 
diff --git a/src/common/slurm_protocol_pack.c b/src/common/slurm_protocol_pack.c
index e2e5f4a000f..adb4d2c0551 100644
--- a/src/common/slurm_protocol_pack.c
+++ b/src/common/slurm_protocol_pack.c
@@ -113,7 +113,8 @@ int pack_msg ( slurm_msg_t const * msg , char ** buffer , uint32_t * buf_len )
 		case RESPONSE_RESOURCE_ALLOCATION :
 		case RESPONSE_IMMEDIATE_RESOURCE_ALLOCATION : 
 		case RESPONSE_JOB_WILL_RUN :
-			pack_resource_allocation_response_msg ( ( resource_allocation_response_msg_t * ) msg -> data , ( void ** ) buffer , buf_len ) ;
+			pack_resource_allocation_response_msg ( ( resource_allocation_response_msg_t * ) msg -> data , 
+				( void ** ) buffer , buf_len ) ;
 			break ;
 		case REQUEST_UPDATE_JOB :
 			pack_job_desc ( (job_desc_msg_t * )  msg -> data , 
@@ -378,8 +379,8 @@ void pack_resource_allocation_response_msg ( resource_allocation_response_msg_t
 	pack32 ( msg->job_id , ( void ** ) buffer , length ) ;
 	packstr ( msg->node_list , ( void ** ) buffer , length ) ;
 	pack16 ( msg->num_cpu_groups , ( void ** ) buffer , length ) ;
-	packint_array ( msg->cpus_per_node, msg->num_cpu_groups , ( void ** ) buffer  , length ) ;
-	packint_array ( msg->cpu_count_reps, msg->num_cpu_groups, ( void ** ) buffer  , length ) ;
+	pack32_array ( msg->cpus_per_node, msg->num_cpu_groups , ( void ** ) buffer  , length ) ;
+	pack32_array ( msg->cpu_count_reps, msg->num_cpu_groups, ( void ** ) buffer  , length ) ;
 }
 
 int unpack_resource_allocation_response_msg ( resource_allocation_response_msg_t ** msg , void ** buffer , int * length )
@@ -389,16 +390,14 @@ int unpack_resource_allocation_response_msg ( resource_allocation_response_msg_t
 	/* alloc memory for structure */	
 	tmp_ptr = xmalloc ( sizeof ( resource_allocation_response_msg_t ) ) ;
 	if (tmp_ptr == NULL) 
-	{
 		return ENOMEM;
-	}
 
 	/* load the data values */
 	unpack32 ( & tmp_ptr -> job_id , ( void ** ) buffer , length ) ;
 	unpackstr_xmalloc ( & tmp_ptr -> node_list , &uint16_tmp,  ( void ** ) buffer , length ) ;
 	unpack16 ( & tmp_ptr -> num_cpu_groups , ( void ** ) buffer , length ) ;
-	unpackint_array ( (uint32_t **) &(tmp_ptr->cpus_per_node), &uint16_tmp, ( void ** ) buffer  , length ) ;
-	unpackint_array ( (uint32_t **) &(tmp_ptr->cpu_count_reps), &uint16_tmp,  ( void ** ) buffer  , length ) ;
+	unpack32_array ( (uint32_t **) &(tmp_ptr->cpus_per_node), &uint16_tmp, ( void ** ) buffer  , length ) ;
+	unpack32_array ( (uint32_t **) &(tmp_ptr->cpu_count_reps), &uint16_tmp,  ( void ** ) buffer  , length ) ;
 	*msg = tmp_ptr ;
 	return 0 ;
 }
-- 
GitLab