From: Denis Vlasenko Date: Sat, 31 May 2008 07:00:33 +0000 (-0000) Subject: runsvdir: make it more robust against libc buglets (errno accidentally set to !0) X-Git-Tag: 1_11_0~151 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=8f74094548a1147ed7b459ca771343483b1c202c;p=oweals%2Fbusybox.git runsvdir: make it more robust against libc buglets (errno accidentally set to !0) closes bug 3514 function old new delta runsvdir_main 1672 1664 -8 --- diff --git a/runit/runsvdir.c b/runit/runsvdir.c index b4450c00c..df6b8869d 100644 --- a/runit/runsvdir.c +++ b/runit/runsvdir.c @@ -141,8 +141,12 @@ static void runsvdir(void) } for (i = 0; i < svnum; i++) sv[i].isgone = 1; - errno = 0; - while ((d = readdir(dir))) { + + while (1) { + errno = 0; + d = readdir(dir); + if (!d) + break; if (d->d_name[0] == '.') continue; if (stat(d->d_name, &s) == -1) { @@ -194,6 +198,7 @@ static void runsvdir(void) if (sv[i].pid) kill(sv[i].pid, SIGTERM); sv[i] = sv[--svnum]; +/* BUG? we deleted sv[i] by copying over sv[last], but we will not check this newly-copied one! */ check = 1; } }