From 0c7bcad5eaa11b368460759fc87f949e8c56b98f Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Tue, 18 Jun 2013 16:00:37 -0400 Subject: [PATCH] Fix: remove use of stat() 1019896 Time of check time of use In utils_mkdir_recursive: A check occurs on a file's attributes before the file is used in a privileged operation, but things may have changed (CWE-367) mkdir() is already doing the EEXIST check. Signed-off-by: Mathieu Desnoyers --- src/common/utils.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/src/common/utils.c b/src/common/utils.c index 38f78a7e8..3e659a1c8 100644 --- a/src/common/utils.c +++ b/src/common/utils.c @@ -22,8 +22,8 @@ #include #include #include -#include #include +#include #include #include #include @@ -248,7 +248,6 @@ LTTNG_HIDDEN int utils_mkdir_recursive(const char *path, mode_t mode) { char *p, tmp[PATH_MAX]; - struct stat statbuf; size_t len; int ret; @@ -276,15 +275,12 @@ int utils_mkdir_recursive(const char *path, mode_t mode) ret = -1; goto error; } - ret = stat(tmp, &statbuf); + ret = mkdir(tmp, mode); if (ret < 0) { - ret = mkdir(tmp, mode); - if (ret < 0) { - if (errno != EEXIST) { - PERROR("mkdir recursive"); - ret = -errno; - goto error; - } + if (errno != EEXIST) { + PERROR("mkdir recursive"); + ret = -errno; + goto error; } } *p = '/'; -- 2.34.1