diff options
| -rw-r--r-- | util/nvmutil/nvmutil.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/util/nvmutil/nvmutil.c b/util/nvmutil/nvmutil.c index 25953de5..96948f09 100644 --- a/util/nvmutil/nvmutil.c +++ b/util/nvmutil/nvmutil.c @@ -3088,15 +3088,18 @@ static char * x_c_tmpdir(void) { char *t; + struct stat st; t = getenv("TMPDIR"); - if (t && *t) - return t; + if (t && *t) { + if (stat(t, &st) == 0 && S_ISDIR(st.st_mode)) + return t; + } - if (access("/tmp", W_OK) == 0) + if (stat("/tmp", &st) == 0 && S_ISDIR(st.st_mode)) return "/tmp"; - if (access("/var/tmp", W_OK) == 0) + if (stat("/var/tmp", &st) == 0 && S_ISDIR(st.st_mode)) return "/var/tmp"; return "."; |
