From afdc1b5d0da249ae1eb2ededab06182c93c3a92a Mon Sep 17 00:00:00 2001 From: Samuel Herts Date: Mon, 6 Apr 2026 11:29:13 -0400 Subject: [PATCH 01/13] Update msgbundle.c message buffer flush condition check for #153 --- src/server/auditserver/msgbundle.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/auditserver/msgbundle.c b/src/server/auditserver/msgbundle.c index d1ff8906..1324428f 100644 --- a/src/server/auditserver/msgbundle.c +++ b/src/server/auditserver/msgbundle.c @@ -135,7 +135,7 @@ static void *thrd_main(void *timeout) do { debug_printf2("Triggering message buffer cache flush due to timeout\n"); result = write(flush_pipe[1], "f", 1); - } while (result == EINTR); + } while (result == -1 && errno == EINTR); pthread_mutex_lock(&mut); active_timeout = 0; From 48050132ab15fb919615a5354fd6556bfdd9ef3d Mon Sep 17 00:00:00 2001 From: Samuel Herts Date: Mon, 6 Apr 2026 11:36:47 -0400 Subject: [PATCH 02/13] Update translate_maps.c to properly check opening file descriptor for #154 --- src/server/auditserver/translate_maps.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/auditserver/translate_maps.c b/src/server/auditserver/translate_maps.c index e3155df9..1b1d4a59 100644 --- a/src/server/auditserver/translate_maps.c +++ b/src/server/auditserver/translate_maps.c @@ -199,7 +199,7 @@ int translate_proc_pid_maps(char *spindle_dir, int pid, char *output_file, int o } newfd = open_replacement_proc_maps(spindle_dir, pid, output_file, output_file_size); - if (fd == -1) { + if (newfd == -1) { close(fd); return -1; } From 27d93f7a53f3060df5d6e589864afd5b45fe4619 Mon Sep 17 00:00:00 2001 From: Samuel Herts Date: Mon, 6 Apr 2026 11:38:20 -0400 Subject: [PATCH 03/13] Update translate_maps.c to remove unneeded null terminator insertion for #155 --- src/server/auditserver/translate_maps.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/server/auditserver/translate_maps.c b/src/server/auditserver/translate_maps.c index 1b1d4a59..b1745a6e 100644 --- a/src/server/auditserver/translate_maps.c +++ b/src/server/auditserver/translate_maps.c @@ -49,7 +49,6 @@ static int open_replacement_proc_maps(char *spindle_dir, int pid, char *output_f static int uniqnum = 0; snprintf(output_file, output_file_size, "%s/spindle_proc_maps_%d_%d", spindle_dir, pid, uniqnum++); - output_file[MAX_NAME_LEN] = '\0'; fd = open(output_file, O_WRONLY | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR); if (fd == -1) { error = errno; From 62491e5e9f7b9cc22723c272dca6c94d3f1cfcad Mon Sep 17 00:00:00 2001 From: Samuel Herts Date: Mon, 6 Apr 2026 11:39:25 -0400 Subject: [PATCH 04/13] Update translate_maps.c to check the correct sentinel for translate_line parsing for #156 --- src/server/auditserver/translate_maps.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/auditserver/translate_maps.c b/src/server/auditserver/translate_maps.c index b1745a6e..8a05f062 100644 --- a/src/server/auditserver/translate_maps.c +++ b/src/server/auditserver/translate_maps.c @@ -159,7 +159,7 @@ static int translate_line(char *spindle_dir, char *line, int *linelen, int maxle lastpart = spindle_dir; if (*(lastpart+1) == '\0') { lastpart--; - while (lastpart != line && *lastpart != '/') lastpart--; + while (lastpart != spindle_dir && *lastpart != '/') lastpart--; } p = strstr(line, lastpart); From 243100e63616dd2e68cf8f3b89d581158c871e1a Mon Sep 17 00:00:00 2001 From: Samuel Herts Date: Mon, 6 Apr 2026 12:35:33 -0400 Subject: [PATCH 05/13] Update intercept_exec.c string comparison to properly check against env value for #157 --- src/client/client/intercept_exec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/client/client/intercept_exec.c b/src/client/client/intercept_exec.c index 14b555ed..2cfd6d8f 100644 --- a/src/client/client/intercept_exec.c +++ b/src/client/client/intercept_exec.c @@ -71,7 +71,7 @@ static int shouldPropogateSpindle(char **envp, const char *fname) } spindle = orig_getenv ? orig_getenv("SPINDLE") : getenv("SPINDLE"); - if (spindle && (strcasecmp(spindle, "false") == 0 || strcmp("spindle", "0") == 0)) { + if (spindle && (strcasecmp(spindle, "false") == 0 || strcmp(spindle, "0") == 0)) { debug_printf2("Not propogating spindle through exec because getenv(\"SPINDLE\") = %s\n", spindle); return 0; } From 25e12d2c89357e1ea5ec8dddd693a4579ae42ef2 Mon Sep 17 00:00:00 2001 From: Samuel Herts Date: Mon, 6 Apr 2026 12:37:32 -0400 Subject: [PATCH 06/13] Update shmcache.c to properly exit on error for #158 --- src/client/shm_cache/shmcache.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/client/shm_cache/shmcache.c b/src/client/shm_cache/shmcache.c index 75640fbc..59d04d31 100644 --- a/src/client/shm_cache/shmcache.c +++ b/src/client/shm_cache/shmcache.c @@ -380,6 +380,7 @@ static int shmcache_add_worker(const char *libname, const char *mapped_name, int if (!mappedname_str) { free_sheep_entry(entry); free_sheep_str(libname_str); + return -1; } strncpy(mappedname_str, mapped_name, mappedname_len); } From 9b6612963d6f2a4aaf163db1238f7d596068eb4d Mon Sep 17 00:00:00 2001 From: Samuel Herts Date: Mon, 6 Apr 2026 12:50:16 -0400 Subject: [PATCH 07/13] Update lookup.c to no longer free a string literal for #159 --- src/client/client/lookup.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/client/client/lookup.c b/src/client/client/lookup.c index a2e8c9d1..1be836fa 100644 --- a/src/client/client/lookup.c +++ b/src/client/client/lookup.c @@ -213,7 +213,7 @@ int get_existance_test(int fd, const char *path, int *exists) found_file = check_cache(path, "&", cache_name, dir_name, ENOENT, &errcode, &exist_str); if (found_file) { *exists = (exist_str && *exist_str == 'y'); - spindle_free(exist_str); + spindle_free(exist_str); // malloc'd in check_cache return 0; } } @@ -226,7 +226,6 @@ int get_existance_test(int fd, const char *path, int *exists) if (use_cache) { exist_str = *exists ? "y" : "n"; update_cache(cache_name, dir_name, exist_str, &errcode, ENOENT); - spindle_free(exist_str); } return result; From c247711368d65c2fb967e644fa21c1536dbca169 Mon Sep 17 00:00:00 2001 From: Samuel Herts Date: Mon, 6 Apr 2026 12:54:15 -0400 Subject: [PATCH 08/13] Update jobtask.h to use logical and instead of bitwise for #164 --- src/fe/startup/jobtask.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fe/startup/jobtask.h b/src/fe/startup/jobtask.h index 273987c9..4d20668a 100644 --- a/src/fe/startup/jobtask.h +++ b/src/fe/startup/jobtask.h @@ -48,7 +48,7 @@ class JobTask } ~JobTask() { - if (app_argc & !noclean) { + if (app_argc && !noclean) { for (int i = 0; i < app_argc; i++) free(app_argv[i]); free(app_argv); From 35fccfce64bc28feb6b6ef55aa756810d4a8e508 Mon Sep 17 00:00:00 2001 From: Samuel Herts Date: Mon, 6 Apr 2026 13:33:18 -0400 Subject: [PATCH 09/13] Update procmgr.c to read filepath instead of write for #165 --- src/flux/procmgr.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/flux/procmgr.c b/src/flux/procmgr.c index 9dcdd448..55736830 100644 --- a/src/flux/procmgr.c +++ b/src/flux/procmgr.c @@ -216,7 +216,7 @@ static int read_pidfile(const char *name, const char *session_dir) snprintf(session_path, sizeof(session_path), "%s/%s.pid", session_dir, name); session_path[sizeof(session_path)-1] = '\0'; - f = fopen(session_path, "w"); + f = fopen(session_path, "r"); if (!f) { error = errno; fprintf(stderr, "Error reading pid file for spindle service at %s: %s\n", session_path, strerror(error)); From a11d29c0cec0a06132073b847eba091ab199158f Mon Sep 17 00:00:00 2001 From: Samuel Herts Date: Mon, 6 Apr 2026 13:42:42 -0400 Subject: [PATCH 10/13] Update procmgr.c to properly print error message for #166 --- src/flux/procmgr.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/flux/procmgr.c b/src/flux/procmgr.c index 55736830..33fbdbf5 100644 --- a/src/flux/procmgr.c +++ b/src/flux/procmgr.c @@ -96,7 +96,7 @@ int init_readymsg() int result, error; result = pipe(ready_pipe); if (result == -1) { - error = result; + error = errno; fprintf(stderr, "Could not create ready pipe for spindle session: %s\n", strerror(error)); return -1; } From 63c9e79445e90e745c5d18b78f32fe9d541f7adc Mon Sep 17 00:00:00 2001 From: Samuel Herts Date: Mon, 6 Apr 2026 13:51:20 -0400 Subject: [PATCH 11/13] Update flux-spindle.c to properly set opt from flag for #167 --- src/flux/flux-spindle.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/flux/flux-spindle.c b/src/flux/flux-spindle.c index 6c99341a..bd2213f2 100644 --- a/src/flux/flux-spindle.c +++ b/src/flux/flux-spindle.c @@ -362,7 +362,7 @@ static int parse_yesno(opt_t *opt, opt_t flag, const char *yesno) if (strcasecmp(yesno, "no") == 0 || strcasecmp(yesno, "false") == 0 || strcasecmp(yesno, "0") == 0) *opt &= ~flag; else if (strcasecmp(yesno, "yes") == 0 || strcasecmp(yesno, "true") == 0 || strcasecmp(yesno, "1") == 0) - *opt |= 1; + *opt |= flag; else logerrno_printf_and_return(1, "Error in spindle option: Expected 'yes' or 'no', got %s\n", yesno); return 0; From 86369383134f8c6855ac10775282759690e76e0b Mon Sep 17 00:00:00 2001 From: Samuel Herts Date: Mon, 6 Apr 2026 14:17:10 -0400 Subject: [PATCH 12/13] Update handle_vararg.h to properly set argv pointer for #169 --- src/utils/handle_vararg.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/utils/handle_vararg.h b/src/utils/handle_vararg.h index 8673b091..95c9f295 100644 --- a/src/utils/handle_vararg.h +++ b/src/utils/handle_vararg.h @@ -44,6 +44,7 @@ errno = ENOMEM; \ return -1; \ } \ + argv = newp; \ } \ } \ \ From 26d9849a02d22cdd601cddb8a14c2fc77153aacb Mon Sep 17 00:00:00 2001 From: Samuel Herts Date: Wed, 8 Apr 2026 09:54:52 -0400 Subject: [PATCH 13/13] Update exitnote.c to properly close any open fd for #170 --- src/utils/exitnote.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/exitnote.c b/src/utils/exitnote.c index d071efc3..69e7ac17 100644 --- a/src/utils/exitnote.c +++ b/src/utils/exitnote.c @@ -181,7 +181,7 @@ int pingExitNote(const char *location) done: if (socketpath) free(socketpath); - if (sockfd) + if (sockfd != -1) close(sockfd); return presult;