aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2024-04-10 09:16:22 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2024-04-10 09:16:22 -0400
commit55dd54d8e239b5d1ea2797d052aee7802da03614 (patch)
treeea47dbcd3123faf7cdc0925e4c7f9b7e1c2243d2 /src
parente55a9a107c6c360028c68902f5b6b62b999ff4f4 (diff)
downloadstasis-55dd54d8e239b5d1ea2797d052aee7802da03614.tar.gz
Fix leaky file handle
Diffstat (limited to 'src')
-rw-r--r--src/docker.c8
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);