Skip to content

Commit c09abc3

Browse files
authored
Merge pull request #2393 from rmetrich/TMPDIR
Allow using $TMPDIR to create temporary files
2 parents 9f2c4a6 + 9bcea1b commit c09abc3

1 file changed

Lines changed: 16 additions & 3 deletions

File tree

src/common/oscap_acquire.c

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,8 @@
5555
#define OSCAP_TEMP_DIR "/tmp"
5656
#endif
5757

58-
#define TEMP_DIR_TEMPLATE OSCAP_TEMP_DIR "/oscap.XXXXXX"
58+
#define OSCAP_TEMP_DIR_TEMPLATE "/oscap.XXXXXX"
59+
#define TEMP_DIR_TEMPLATE OSCAP_TEMP_DIR OSCAP_TEMP_DIR_TEMPLATE
5960
#define TEMP_URL_TEMPLATE "downloaded.XXXXXX"
6061

6162
#ifdef OS_WINDOWS
@@ -115,10 +116,22 @@ char *oscap_acquire_temp_dir()
115116
#else
116117
char *oscap_acquire_temp_dir()
117118
{
118-
char *temp_dir = oscap_strdup(TEMP_DIR_TEMPLATE);
119+
char *temp_dir;
120+
const char *tmpdir = getenv("TMPDIR");
121+
if (tmpdir != NULL && tmpdir[0] != '\0') {
122+
const size_t len = strlen(tmpdir) + strlen(OSCAP_TEMP_DIR_TEMPLATE) + 1;
123+
temp_dir = malloc(len);
124+
if (temp_dir == NULL) {
125+
oscap_seterr(OSCAP_EFAMILY_GLIBC, "Could not allocate memory for temp directory path.");
126+
return NULL;
127+
}
128+
snprintf(temp_dir, len, "%s%s", tmpdir, OSCAP_TEMP_DIR_TEMPLATE);
129+
} else {
130+
temp_dir = oscap_strdup(TEMP_DIR_TEMPLATE);
131+
}
119132
if (mkdtemp(temp_dir) == NULL) {
133+
oscap_seterr(OSCAP_EFAMILY_GLIBC, "Could not create temp directory %s. %s", temp_dir, strerror(errno));
120134
free(temp_dir);
121-
oscap_seterr(OSCAP_EFAMILY_GLIBC, "Could not create temp directory " TEMP_DIR_TEMPLATE ". %s", strerror(errno));
122135
return NULL;
123136
}
124137
return temp_dir;

0 commit comments

Comments
 (0)