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 /src | |
| 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
Diffstat (limited to 'src')
| -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) | 
