From 99523c685a090ee01a087ece5e1fdd9d5b03d1dc Mon Sep 17 00:00:00 2001 From: Adequate Limited Date: Sun, 5 Apr 2026 20:20:44 -0400 Subject: [PATCH] fix(bup,sync): add return-value checks on external script system() calls Closes #109 system() calls to ../update-external.sh and ../init-external.sh had no return-value checks. A failed or erroring script was silently ignored. Added checks and pwarn() logging on non-zero return so failures are visible in the node log. --- src/bup.c | 4 +++- src/sync.c | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/bup.c b/src/bup.c index c623d77..00ed278 100644 --- a/src/bup.c +++ b/src/bup.c @@ -252,7 +252,9 @@ int b_update(char *fname) mergepinklists(); /* trigger synchronous external update - if available */ if (Ininit == 0 && fexists("../update-external.sh")) { - system("../update-external.sh"); + if (system("../update-external.sh") != 0) { + pwarn("../update-external.sh returned error"); + } } CLEANUP: diff --git a/src/sync.c b/src/sync.c index fa0dde4..ca4cf06 100644 --- a/src/sync.c +++ b/src/sync.c @@ -324,7 +324,9 @@ int resync(word32 quorum[], word32 *qidx, void *highweight, void *highbnum) /* Shell script in /bin directory */ if(Exportflag && fexists("../init-external.sh")) { plog("Calling ../init-external.sh\n"); /* first time call */ - system("../init-external.sh"); + if (system("../init-external.sh") != 0) { + pwarn("../init-external.sh returned error"); + } } if(!Running) resign("quorum update");