@@ -226,19 +226,43 @@ static void group(int sd, short args, void *cbdata)
226226 PMIx_Info_list_convert (grpinfo , & darray );
227227 info = (pmix_info_t * )darray .array ;
228228 ninfo = darray .size ;
229- PMIx_Data_pack (NULL , relay , & ninfo , 1 , PMIX_SIZE );
229+ rc = PMIx_Data_pack (NULL , relay , & ninfo , 1 , PMIX_SIZE );
230+ if (PMIX_SUCCESS != rc ) {
231+ PMIX_ERROR_LOG (rc );
232+ PMIX_DATA_BUFFER_RELEASE (relay );
233+ PMIX_DESTRUCT (& sig );
234+ goto error ;
235+ }
230236 if (0 < ninfo ) {
231- PMIx_Data_pack (NULL , relay , info , ninfo , PMIX_INFO );
237+ rc = PMIx_Data_pack (NULL , relay , info , ninfo , PMIX_INFO );
238+ if (PMIX_SUCCESS != rc ) {
239+ PMIX_ERROR_LOG (rc );
240+ PMIX_DATA_BUFFER_RELEASE (relay );
241+ PMIX_DESTRUCT (& sig );
242+ goto error ;
243+ }
232244 }
233245 PMIX_DATA_ARRAY_DESTRUCT (& darray );
234246
235247 // pack any endpts
236248 PMIx_Info_list_convert (endpts , & darray );
237249 info = (pmix_info_t * )darray .array ;
238250 ninfo = darray .size ;
239- PMIx_Data_pack (NULL , relay , & ninfo , 1 , PMIX_SIZE );
251+ rc = PMIx_Data_pack (NULL , relay , & ninfo , 1 , PMIX_SIZE );
252+ if (PMIX_SUCCESS != rc ) {
253+ PMIX_ERROR_LOG (rc );
254+ PMIX_DATA_BUFFER_RELEASE (relay );
255+ PMIX_DESTRUCT (& sig );
256+ goto error ;
257+ }
240258 if (0 < ninfo ) {
241- PMIx_Data_pack (NULL , relay , info , ninfo , PMIX_INFO );
259+ rc = PMIx_Data_pack (NULL , relay , info , ninfo , PMIX_INFO );
260+ if (PMIX_SUCCESS != rc ) {
261+ PMIX_ERROR_LOG (rc );
262+ PMIX_DATA_BUFFER_RELEASE (relay );
263+ PMIX_DESTRUCT (& sig );
264+ goto error ;
265+ }
242266 }
243267 PMIX_DATA_ARRAY_DESTRUCT (& darray );
244268 }
@@ -298,7 +322,7 @@ void prte_grpcomm_direct_grp_recv(int status, pmix_proc_t *sender,
298322 prte_namelist_t * nm ;
299323 pmix_data_array_t darray ;
300324 pmix_status_t st ;
301- pmix_info_t * info = NULL , * endpts , * grpinfo ;
325+ pmix_info_t * info = NULL , * endpts , * grpinfo = NULL ;
302326 prte_grpcomm_direct_group_signature_t * sig = NULL ;
303327 pmix_data_buffer_t * reply ;
304328 prte_grpcomm_group_t * coll ;
@@ -386,7 +410,9 @@ void prte_grpcomm_direct_grp_recv(int status, pmix_proc_t *sender,
386410 rc = PMIx_Data_unpack (NULL , buffer , & nendpts , & cnt , PMIX_SIZE );
387411 if (PMIX_SUCCESS != rc ) {
388412 PMIX_ERROR_LOG (rc );
389- PMIX_INFO_FREE (grpinfo , ngrpinfo );
413+ if (NULL != grpinfo ) {
414+ PMIX_INFO_FREE (grpinfo , ngrpinfo );
415+ }
390416 PMIX_RELEASE (sig );
391417 return ;
392418 }
@@ -396,7 +422,9 @@ void prte_grpcomm_direct_grp_recv(int status, pmix_proc_t *sender,
396422 rc = PMIx_Data_unpack (NULL , buffer , endpts , & cnt , PMIX_INFO );
397423 if (PMIX_SUCCESS != rc ) {
398424 PMIX_ERROR_LOG (rc );
399- PMIX_INFO_FREE (grpinfo , ngrpinfo );
425+ if (NULL != grpinfo ) {
426+ PMIX_INFO_FREE (grpinfo , ngrpinfo );
427+ }
400428 PMIX_INFO_FREE (endpts , nendpts );
401429 PMIX_RELEASE (sig );
402430 return ;
0 commit comments