diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2024-04-10 09:16:22 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2024-04-10 09:16:22 -0400 |
commit | 55dd54d8e239b5d1ea2797d052aee7802da03614 (patch) | |
tree | ea47dbcd3123faf7cdc0925e4c7f9b7e1c2243d2 | |
parent | e55a9a107c6c360028c68902f5b6b62b999ff4f4 (diff) | |
download | stasis-55dd54d8e239b5d1ea2797d052aee7802da03614.tar.gz |
Fix leaky file handle
-rw-r--r-- | src/docker.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/docker.c b/src/docker.c index 0a1f8fd..f8c9c11 100644 --- a/src/docker.c +++ b/src/docker.c @@ -109,7 +109,7 @@ char *docker_ident() { char line[PATH_MAX]; struct Process proc; - tempfile = xmkstemp(&fp, "w"); + tempfile = xmkstemp(&fp, "w+"); if (!fp || !tempfile) { return NULL; } @@ -117,17 +117,21 @@ char *docker_ident() { memset(&proc, 0, sizeof(proc)); strcpy(proc.f_stdout, tempfile); strcpy(proc.f_stderr, "/dev/null"); - shell(&proc, "docker -v"); + shell(&proc, "docker --version"); if (!freopen(tempfile, "r", fp)) { + remove(tempfile); guard_free(tempfile); return NULL; } if (!fgets(line, sizeof(line) - 1, fp)) { + fclose(fp); + remove(tempfile); guard_free(tempfile); return NULL; } + fclose(fp); remove(tempfile); guard_free(tempfile); |