diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2023-11-20 17:07:11 -0500 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2023-11-20 17:07:11 -0500 |
commit | 43bcd36bb31c1ab117b54f21746b119db2448449 (patch) | |
tree | 12e69ecb6c84a8b99ae8df3bbf65642152d21bcc /src/system.c | |
parent | 8b3f862c59f7866f67f1da349efd5e3d931e1eae (diff) | |
download | stasis-43bcd36bb31c1ab117b54f21746b119db2448449.tar.gz |
Use TMPDIR, and fail when script cannot be executed within that filesystem
Diffstat (limited to 'src/system.c')
-rw-r--r-- | src/system.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/system.c b/src/system.c index b819615..52e354a 100644 --- a/src/system.c +++ b/src/system.c @@ -204,16 +204,24 @@ int shell_safe(struct Process *proc, char *args[]) { return result; } -char *shell_output(const char *command) { +char *shell_output(const char *command, int *status) { const size_t initial_size = OMC_BUFSIZ; size_t current_size = initial_size; char *result = NULL; char line[OMC_BUFSIZ]; FILE *pp; + + errno = 0; + *status = 0; pp = popen(command, "r"); if (!pp) { + *status = -1; return NULL; } + + if (errno) { + *status = 1; + } result = calloc(initial_size, sizeof(result)); while (fgets(line, sizeof(line) - 1, pp) != NULL) { size_t result_len = strlen(result); |