diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2024-04-10 08:09:30 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2024-04-10 08:09:30 -0400 |
commit | 2a18221f217d6428bee8e87bc07deae8ed71d22b (patch) | |
tree | 6b067269020a3c5c9a19be3206b85eff521a2052 | |
parent | ec226b65e73dcb803c11ae09d869a2a2eae3e2f7 (diff) | |
download | stasis-2a18221f217d6428bee8e87bc07deae8ed71d22b.tar.gz |
xmkstemp falls back to /tmp when globals are not yet initialized
* Increase t_name buffer size to match input argument sizes
-rw-r--r-- | src/utils.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/utils.c b/src/utils.c index 402b62d..d24e32d 100644 --- a/src/utils.c +++ b/src/utils.c @@ -453,10 +453,19 @@ void debug_shell() { } char *xmkstemp(FILE **fp, const char *mode) { - char t_name[PATH_MAX]; + int fd = -1; + char tmpdir[PATH_MAX]; + char t_name[PATH_MAX * 2]; + + if (globals.tmpdir) { + strcpy(tmpdir, globals.tmpdir); + } else { + strcpy(tmpdir, "/tmp"); + } memset(t_name, 0, sizeof(t_name)); - sprintf(t_name, "%s/%s", globals.tmpdir, "OMC.XXXXXX"); - int fd = mkstemp(t_name); + sprintf(t_name, "%s/%s", tmpdir, "OMC.XXXXXX"); + + fd = mkstemp(t_name); *fp = fdopen(fd, mode); if (!*fp) { if (fd > 0) |