X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/182f6368f75799e25563cbf355923a72c995078b..d7e3ab62b9c2fdf720c9350660abb9d8d67dd5af:/sbr/context_save.c diff --git a/sbr/context_save.c b/sbr/context_save.c index 86776c7d..9105a596 100644 --- a/sbr/context_save.c +++ b/sbr/context_save.c @@ -43,7 +43,7 @@ context_save (void) sigaddset (&set, SIGTERM); sigprocmask (SIG_BLOCK, &set, &oset); - if (!(out = lkfopendata (ctxpath, "w", 1))) + if (!(out = lkfopendata (ctxpath, "w"))) adios (ctxpath, "unable to write"); for (np = m_defs; np; np = np->n_next) if (np->n_context) @@ -53,6 +53,8 @@ context_save (void) sigprocmask (SIG_SETMASK, &oset, &set); /* reset the signal mask */ if (action == 0) + /* This must be _exit(), not exit(), because the child didn't + call unregister_for_removal() in m_chkids(). */ _exit (0); /* we are child, time to die */ } @@ -83,8 +85,8 @@ m_chkids (void) break; case 0: - setgid (getgid ()); - setuid (getuid ()); + /* It's not necessary to call unregister_for_removal(0) + because the child calls _exit() in context_save(). */ break; default: