@@ -553,13 +553,15 @@ int ompi_rte_init(int *pargc, char ***pargv)
553
553
opal_process_info .my_name .vpid = OPAL_PROC_MY_NAME .vpid ;
554
554
555
555
/* set our hostname */
556
+ ev1 = NULL ;
556
557
OPAL_MODEX_RECV_VALUE_OPTIONAL (ret , PMIX_HOSTNAME , & OPAL_PROC_MY_NAME ,
557
558
(char * * )& ev1 , PMIX_STRING );
558
- if (PMIX_SUCCESS == ret ) {
559
+ if (PMIX_SUCCESS == ret && NULL != ev1 ) {
559
560
if (NULL != opal_process_info .nodename ) {
560
561
free (opal_process_info .nodename );
561
562
}
562
563
opal_process_info .nodename = ev1 ; // ev1 is an allocated string
564
+ ev1 = NULL ; // protect the string
563
565
}
564
566
565
567
/* get our local rank from PMIx */
@@ -648,27 +650,33 @@ int ompi_rte_init(int *pargc, char ***pargv)
648
650
opal_process_info .app_ldrs = strdup ("0" );
649
651
opal_asprintf (& opal_process_info .app_sizes , "%u" , opal_process_info .num_procs );
650
652
} else {
653
+ val = NULL ;
651
654
OPAL_MODEX_RECV_VALUE_OPTIONAL (rc , "OMPI_APP_SIZES" , & pname , & val , PMIX_STRING );
652
- if (PMIX_SUCCESS != rc ) {
655
+ if (PMIX_SUCCESS != rc || NULL == val ) {
653
656
/* assume it is just us */
654
657
opal_asprintf (& opal_process_info .app_sizes , "%u" , opal_process_info .num_procs );
655
658
} else {
656
659
opal_process_info .app_sizes = val ;
660
+ val = NULL ; // protect the string
657
661
}
662
+ val = NULL ;
658
663
OPAL_MODEX_RECV_VALUE_OPTIONAL (rc , "OMPI_FIRST_RANKS" , & pname , & val , PMIX_STRING );
659
- if (PMIX_SUCCESS != rc ) {
664
+ if (PMIX_SUCCESS != rc || NULL == val ) {
660
665
/* assume it is just us */
661
666
opal_process_info .app_ldrs = strdup ("0" );
662
667
} else {
663
668
opal_process_info .app_ldrs = val ;
669
+ val = NULL ; // protect the string
664
670
}
665
671
}
666
672
667
673
/* get our command - defaults to our appnum */
674
+ ev1 = NULL ;
668
675
OPAL_MODEX_RECV_VALUE_OPTIONAL (rc , PMIX_APP_ARGV ,
669
676
& pname , (char * * )& ev1 , PMIX_STRING );
670
- if (PMIX_SUCCESS == rc ) {
677
+ if (PMIX_SUCCESS == rc && NULL != ev1 ) {
671
678
opal_process_info .command = ev1 ; // ev1 is an allocated string
679
+ ev1 = NULL ; // protect the string
672
680
} else if (NULL != pargv ) {
673
681
tmp = * pargv ;
674
682
if (NULL != tmp ) {
@@ -696,9 +704,11 @@ int ompi_rte_init(int *pargc, char ***pargv)
696
704
}
697
705
698
706
/* retrieve temp directories info */
707
+ val = NULL ;
699
708
OPAL_MODEX_RECV_VALUE_OPTIONAL (rc , PMIX_TMPDIR , & pname , & val , PMIX_STRING );
700
709
if (OPAL_SUCCESS == rc && NULL != val ) {
701
710
opal_process_info .top_session_dir = val ;
711
+ val = NULL ; // protect the string
702
712
} else {
703
713
/* we need to create something */
704
714
rc = _setup_top_session_dir (& opal_process_info .top_session_dir );
@@ -709,10 +719,11 @@ int ompi_rte_init(int *pargc, char ***pargv)
709
719
}
710
720
711
721
/* retrieve job-session directory info */
722
+ val = NULL ;
712
723
OPAL_MODEX_RECV_VALUE_OPTIONAL (rc , PMIX_NSDIR , & pname , & val , PMIX_STRING );
713
724
if (PMIX_SUCCESS == rc && NULL != val ) {
714
725
opal_process_info .job_session_dir = val ;
715
- val = NULL ;
726
+ val = NULL ; // protect the string
716
727
} else {
717
728
/* we need to create something */
718
729
rc = _setup_job_session_dir (& opal_process_info .job_session_dir );
@@ -723,9 +734,11 @@ int ompi_rte_init(int *pargc, char ***pargv)
723
734
}
724
735
725
736
/* retrieve proc-session directory info */
737
+ val = NULL ;
726
738
OPAL_MODEX_RECV_VALUE_OPTIONAL (rc , PMIX_PROCDIR , & OPAL_PROC_MY_NAME , & val , PMIX_STRING );
727
739
if (OPAL_SUCCESS == rc && NULL != val ) {
728
740
opal_process_info .proc_session_dir = val ;
741
+ val = NULL ; // protect the string
729
742
} else {
730
743
/* we need to create something */
731
744
rc = _setup_proc_session_dir (& opal_process_info .proc_session_dir );
@@ -737,10 +750,11 @@ int ompi_rte_init(int *pargc, char ***pargv)
737
750
738
751
/* get our initial working directory - defaults to getting the value
739
752
* for our app */
753
+ val = NULL ;
740
754
OPAL_MODEX_RECV_VALUE_OPTIONAL (rc , PMIX_WDIR , & pname , & val , PMIX_STRING );
741
755
if (PMIX_SUCCESS == rc && NULL != val ) {
742
756
opal_process_info .initial_wdir = val ;
743
- val = NULL ;
757
+ val = NULL ; // protect the string
744
758
}
745
759
746
760
/* identify our location */
@@ -750,6 +764,7 @@ int ompi_rte_init(int *pargc, char ***pargv)
750
764
if (PMIX_SUCCESS == rc && NULL != val ) {
751
765
opal_process_info .cpuset = val ;
752
766
opal_process_info .proc_is_bound = true;
767
+ val = NULL ; // protect the string
753
768
} else {
754
769
opal_process_info .cpuset = NULL ;
755
770
opal_process_info .proc_is_bound = false;
@@ -764,6 +779,7 @@ int ompi_rte_init(int *pargc, char ***pargv)
764
779
goto error ;
765
780
}
766
781
/* retrieve the local peers - defaults to local node */
782
+ val = NULL ;
767
783
OPAL_MODEX_RECV_VALUE (rc , PMIX_LOCAL_PEERS ,
768
784
& pname , & val , PMIX_STRING );
769
785
if (PMIX_SUCCESS == rc && NULL != val ) {
0 commit comments