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); | 
