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