diff --git a/ompi/runtime/ompi_rte.c b/ompi/runtime/ompi_rte.c index 608aac6886..bad581cf25 100644 --- a/ompi/runtime/ompi_rte.c +++ b/ompi/runtime/ompi_rte.c @@ -553,13 +553,15 @@ int ompi_rte_init(int *pargc, char ***pargv) opal_process_info.my_name.vpid = OPAL_PROC_MY_NAME.vpid; /* set our hostname */ + ev1 = NULL; OPAL_MODEX_RECV_VALUE_OPTIONAL(ret, PMIX_HOSTNAME, &OPAL_PROC_MY_NAME, (char**)&ev1, PMIX_STRING); - if (PMIX_SUCCESS == ret) { + if (PMIX_SUCCESS == ret && NULL != ev1) { if (NULL != opal_process_info.nodename) { free(opal_process_info.nodename); } opal_process_info.nodename = ev1; // ev1 is an allocated string + ev1 = NULL; // protect the string } /* get our local rank from PMIx */ @@ -648,27 +650,33 @@ int ompi_rte_init(int *pargc, char ***pargv) opal_process_info.app_ldrs = strdup("0"); opal_asprintf(&opal_process_info.app_sizes, "%u", opal_process_info.num_procs); } else { + val = NULL; OPAL_MODEX_RECV_VALUE_OPTIONAL(rc, "OMPI_APP_SIZES", &pname, &val, PMIX_STRING); - if (PMIX_SUCCESS != rc) { + if (PMIX_SUCCESS != rc || NULL == val) { /* assume it is just us */ opal_asprintf(&opal_process_info.app_sizes, "%u", opal_process_info.num_procs); } else { opal_process_info.app_sizes = val; + val = NULL; // protect the string } + val = NULL; OPAL_MODEX_RECV_VALUE_OPTIONAL(rc, "OMPI_FIRST_RANKS", &pname, &val, PMIX_STRING); - if (PMIX_SUCCESS != rc) { + if (PMIX_SUCCESS != rc || NULL == val) { /* assume it is just us */ opal_process_info.app_ldrs = strdup("0"); } else { opal_process_info.app_ldrs = val; + val = NULL; // protect the string } } /* get our command - defaults to our appnum */ + ev1 = NULL; OPAL_MODEX_RECV_VALUE_OPTIONAL(rc, PMIX_APP_ARGV, &pname, (char**)&ev1, PMIX_STRING); - if (PMIX_SUCCESS == rc) { + if (PMIX_SUCCESS == rc && NULL != ev1) { opal_process_info.command = ev1; // ev1 is an allocated string + ev1 = NULL; // protect the string } else if (NULL != pargv) { tmp = *pargv; if (NULL != tmp) { @@ -696,9 +704,11 @@ int ompi_rte_init(int *pargc, char ***pargv) } /* retrieve temp directories info */ + val = NULL; OPAL_MODEX_RECV_VALUE_OPTIONAL(rc, PMIX_TMPDIR, &pname, &val, PMIX_STRING); if (OPAL_SUCCESS == rc && NULL != val) { opal_process_info.top_session_dir = val; + val = NULL; // protect the string } else { /* we need to create something */ rc = _setup_top_session_dir(&opal_process_info.top_session_dir); @@ -709,10 +719,11 @@ int ompi_rte_init(int *pargc, char ***pargv) } /* retrieve job-session directory info */ + val = NULL; OPAL_MODEX_RECV_VALUE_OPTIONAL(rc, PMIX_NSDIR, &pname, &val, PMIX_STRING); if (PMIX_SUCCESS == rc && NULL != val) { opal_process_info.job_session_dir = val; - val = NULL; + val = NULL; // protect the string } else { /* we need to create something */ rc = _setup_job_session_dir(&opal_process_info.job_session_dir); @@ -723,9 +734,11 @@ int ompi_rte_init(int *pargc, char ***pargv) } /* retrieve proc-session directory info */ + val = NULL; OPAL_MODEX_RECV_VALUE_OPTIONAL(rc, PMIX_PROCDIR, &OPAL_PROC_MY_NAME, &val, PMIX_STRING); if (OPAL_SUCCESS == rc && NULL != val) { opal_process_info.proc_session_dir = val; + val = NULL; // protect the string } else { /* we need to create something */ rc = _setup_proc_session_dir(&opal_process_info.proc_session_dir); @@ -737,10 +750,11 @@ int ompi_rte_init(int *pargc, char ***pargv) /* get our initial working directory - defaults to getting the value * for our app */ + val = NULL; OPAL_MODEX_RECV_VALUE_OPTIONAL(rc, PMIX_WDIR, &pname, &val, PMIX_STRING); if (PMIX_SUCCESS == rc && NULL != val) { opal_process_info.initial_wdir = val; - val = NULL; + val = NULL; // protect the string } /* identify our location */ @@ -750,6 +764,7 @@ int ompi_rte_init(int *pargc, char ***pargv) if (PMIX_SUCCESS == rc && NULL != val) { opal_process_info.cpuset = val; opal_process_info.proc_is_bound = true; + val = NULL; // protect the string } else { opal_process_info.cpuset = NULL; opal_process_info.proc_is_bound = false; @@ -764,6 +779,7 @@ int ompi_rte_init(int *pargc, char ***pargv) goto error; } /* retrieve the local peers - defaults to local node */ + val = NULL; OPAL_MODEX_RECV_VALUE(rc, PMIX_LOCAL_PEERS, &pname, &val, PMIX_STRING); if (PMIX_SUCCESS == rc && NULL != val) {