True.  Ironically, one occurence of sigisemptyset (out of two) is in
hush.c and tries to shortcircuit exactly that kind of iteration, at the
start of the loop in check_and_run_traps().  Basically, that one can be
ifdef'ed out if HAVE_SIGISEMPTYSET is undefined.

Rich Felker wrote:

This is not a suitable fallback implementation. It's not needed on
musl (we provide sigisemptyset), but if this version were used, it
would give the wrong results, because musl's sigemptyset only fills
the first _NSIG-1 bits and ignores the remaining ~900 bits of junk in
sigset_t.

A valid fallback for sigisemptyset would be something like:

        int empty = 1, i;
        for (i=1; i<_NSIG; i++) {
                if (sigismember(set, i)>0) {
                        empty = 0;
                        break;
                }
        }

If _NSIG is unknown (not defined), sizeof(sigset_t)*8+1 could work in
its place, assuming signals are numbered sequentially.

-dborca
_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to