iof/base: fix misc memory leak
as reported by Coverity with CID 1196732
Этот коммит содержится в:
родитель
f7f7fa73dd
Коммит
dc0bc756dc
@ -10,7 +10,7 @@
|
||||
* Copyright (c) 2004-2005 The Regents of the University of California.
|
||||
* All rights reserved.
|
||||
* Copyright (c) 2009-2014 Cisco Systems, Inc. All rights reserved.
|
||||
* Copyright (c) 2014 Research Organization for Information Science
|
||||
* Copyright (c) 2014-2015 Research Organization for Information Science
|
||||
* and Technology (RIST). All rights reserved.
|
||||
* Copyright (c) 2014 Intel, Inc. All rights reserved.
|
||||
* $COPYRIGHT$
|
||||
@ -103,6 +103,9 @@ char* opal_dirname(const char* filename)
|
||||
{
|
||||
#if defined(HAVE_DIRNAME) || OPAL_HAVE_DIRNAME
|
||||
char* safe_tmp = strdup(filename), *result;
|
||||
if (NULL == safe_tmp) {
|
||||
return NULL;
|
||||
}
|
||||
result = strdup(dirname(safe_tmp));
|
||||
free(safe_tmp);
|
||||
return result;
|
||||
@ -122,6 +125,9 @@ char* opal_dirname(const char* filename)
|
||||
}
|
||||
if( p != filename ) {
|
||||
char* ret = (char*)malloc( p - filename + 1 );
|
||||
if (NULL == ret) {
|
||||
return NULL;
|
||||
}
|
||||
#ifdef HAVE_STRNCPY_S
|
||||
strncpy_s( ret, (p - filename + 1), filename, p - filename );
|
||||
#else
|
||||
|
@ -12,6 +12,8 @@
|
||||
* Copyright (c) 2013 Los Alamos National Security, LLC. All rights reserved.
|
||||
* Copyright (c) 2013 Cisco Systems, Inc. All rights reserved.
|
||||
* Copyright (c) 2015 Intel, Inc. All rights reserved.
|
||||
* Copyright (c) 2015 Research Organization for Information Science
|
||||
* and Technology (RIST). All rights reserved.
|
||||
* $COPYRIGHT$
|
||||
*
|
||||
* Additional copyrights may follow
|
||||
@ -234,14 +236,19 @@ static int orte_iof_base_open(mca_base_open_flag_t flags)
|
||||
*/
|
||||
char *path;
|
||||
path = opal_dirname(orte_output_filename);
|
||||
if (NULL == path) {
|
||||
return ORTE_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
if (0 != strcmp(path, orte_output_filename)) {
|
||||
/* there is a path in this name - ensure that the directory
|
||||
* exists, and create it if not
|
||||
*/
|
||||
if (ORTE_SUCCESS != (rc = opal_os_dirpath_create(path, S_IRWXU))) {
|
||||
free(path);
|
||||
return rc;
|
||||
}
|
||||
}
|
||||
free(path);
|
||||
}
|
||||
|
||||
/* daemons do not need to do this as they do not write out stdout/err */
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user