Skip to content

Commit 7702dfc

Browse files
authored
Merge pull request #7942 from rhc54/topic/init
Ensure we init and protect values
2 parents aa8f7f4 + a574add commit 7702dfc

File tree

1 file changed

+22
-6
lines changed

1 file changed

+22
-6
lines changed

ompi/runtime/ompi_rte.c

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -553,13 +553,15 @@ int ompi_rte_init(int *pargc, char ***pargv)
553553
opal_process_info.my_name.vpid = OPAL_PROC_MY_NAME.vpid;
554554

555555
/* set our hostname */
556+
ev1 = NULL;
556557
OPAL_MODEX_RECV_VALUE_OPTIONAL(ret, PMIX_HOSTNAME, &OPAL_PROC_MY_NAME,
557558
(char**)&ev1, PMIX_STRING);
558-
if (PMIX_SUCCESS == ret) {
559+
if (PMIX_SUCCESS == ret && NULL != ev1) {
559560
if (NULL != opal_process_info.nodename) {
560561
free(opal_process_info.nodename);
561562
}
562563
opal_process_info.nodename = ev1; // ev1 is an allocated string
564+
ev1 = NULL; // protect the string
563565
}
564566

565567
/* get our local rank from PMIx */
@@ -648,27 +650,33 @@ int ompi_rte_init(int *pargc, char ***pargv)
648650
opal_process_info.app_ldrs = strdup("0");
649651
opal_asprintf(&opal_process_info.app_sizes, "%u", opal_process_info.num_procs);
650652
} else {
653+
val = NULL;
651654
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) {
653656
/* assume it is just us */
654657
opal_asprintf(&opal_process_info.app_sizes, "%u", opal_process_info.num_procs);
655658
} else {
656659
opal_process_info.app_sizes = val;
660+
val = NULL; // protect the string
657661
}
662+
val = NULL;
658663
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) {
660665
/* assume it is just us */
661666
opal_process_info.app_ldrs = strdup("0");
662667
} else {
663668
opal_process_info.app_ldrs = val;
669+
val = NULL; // protect the string
664670
}
665671
}
666672

667673
/* get our command - defaults to our appnum */
674+
ev1 = NULL;
668675
OPAL_MODEX_RECV_VALUE_OPTIONAL(rc, PMIX_APP_ARGV,
669676
&pname, (char**)&ev1, PMIX_STRING);
670-
if (PMIX_SUCCESS == rc) {
677+
if (PMIX_SUCCESS == rc && NULL != ev1) {
671678
opal_process_info.command = ev1; // ev1 is an allocated string
679+
ev1 = NULL; // protect the string
672680
} else if (NULL != pargv) {
673681
tmp = *pargv;
674682
if (NULL != tmp) {
@@ -696,9 +704,11 @@ int ompi_rte_init(int *pargc, char ***pargv)
696704
}
697705

698706
/* retrieve temp directories info */
707+
val = NULL;
699708
OPAL_MODEX_RECV_VALUE_OPTIONAL(rc, PMIX_TMPDIR, &pname, &val, PMIX_STRING);
700709
if (OPAL_SUCCESS == rc && NULL != val) {
701710
opal_process_info.top_session_dir = val;
711+
val = NULL; // protect the string
702712
} else {
703713
/* we need to create something */
704714
rc = _setup_top_session_dir(&opal_process_info.top_session_dir);
@@ -709,10 +719,11 @@ int ompi_rte_init(int *pargc, char ***pargv)
709719
}
710720

711721
/* retrieve job-session directory info */
722+
val = NULL;
712723
OPAL_MODEX_RECV_VALUE_OPTIONAL(rc, PMIX_NSDIR, &pname, &val, PMIX_STRING);
713724
if (PMIX_SUCCESS == rc && NULL != val) {
714725
opal_process_info.job_session_dir = val;
715-
val = NULL;
726+
val = NULL; // protect the string
716727
} else {
717728
/* we need to create something */
718729
rc = _setup_job_session_dir(&opal_process_info.job_session_dir);
@@ -723,9 +734,11 @@ int ompi_rte_init(int *pargc, char ***pargv)
723734
}
724735

725736
/* retrieve proc-session directory info */
737+
val = NULL;
726738
OPAL_MODEX_RECV_VALUE_OPTIONAL(rc, PMIX_PROCDIR, &OPAL_PROC_MY_NAME, &val, PMIX_STRING);
727739
if (OPAL_SUCCESS == rc && NULL != val) {
728740
opal_process_info.proc_session_dir = val;
741+
val = NULL; // protect the string
729742
} else {
730743
/* we need to create something */
731744
rc = _setup_proc_session_dir(&opal_process_info.proc_session_dir);
@@ -737,10 +750,11 @@ int ompi_rte_init(int *pargc, char ***pargv)
737750

738751
/* get our initial working directory - defaults to getting the value
739752
* for our app */
753+
val = NULL;
740754
OPAL_MODEX_RECV_VALUE_OPTIONAL(rc, PMIX_WDIR, &pname, &val, PMIX_STRING);
741755
if (PMIX_SUCCESS == rc && NULL != val) {
742756
opal_process_info.initial_wdir = val;
743-
val = NULL;
757+
val = NULL; // protect the string
744758
}
745759

746760
/* identify our location */
@@ -750,6 +764,7 @@ int ompi_rte_init(int *pargc, char ***pargv)
750764
if (PMIX_SUCCESS == rc && NULL != val) {
751765
opal_process_info.cpuset = val;
752766
opal_process_info.proc_is_bound = true;
767+
val = NULL; // protect the string
753768
} else {
754769
opal_process_info.cpuset = NULL;
755770
opal_process_info.proc_is_bound = false;
@@ -764,6 +779,7 @@ int ompi_rte_init(int *pargc, char ***pargv)
764779
goto error;
765780
}
766781
/* retrieve the local peers - defaults to local node */
782+
val = NULL;
767783
OPAL_MODEX_RECV_VALUE(rc, PMIX_LOCAL_PEERS,
768784
&pname, &val, PMIX_STRING);
769785
if (PMIX_SUCCESS == rc && NULL != val) {

0 commit comments

Comments
 (0)