Removed m_chkids(), per suggestion of Marcin Cieslak.
authorDavid Levine <levinedl@acm.org>
Sat, 14 Feb 2015 04:22:21 +0000 (22:22 -0600)
committerPhilipp Takacs <philipp@bureaucracy.de>
Wed, 11 Mar 2015 22:53:36 +0000 (23:53 +0100)
sbr/context_save.c

index d1371d0..ac0dbfd 100644 (file)
@@ -6,19 +6,18 @@
 ** complete copyright information.
 */
 
-#include <h/mh.h>
-#include <h/signals.h>
-
 /*
-** static prototypes
-*/
-static int m_chkids(void);
+ * This function used to support setuid/setgid programs by writing
+ * the file as the user.  But that code, m_chkids(), was removed
+ * because there no longer are setuid/setgid programs in nmh.
+ */
 
+#include <h/mh.h>
+#include <h/signals.h>
 
 void
 context_save(void)
 {
-       int action;
        register struct node *np;
        FILE *out;
        sigset_t set, oset;
@@ -31,9 +30,6 @@ context_save(void)
                return;
        ctxflags &= ~CTXMOD;
 
-       if ((action = m_chkids()) > 0)
-               return;  /* child did it for us */
-
        /* block a few signals */
        sigemptyset(&set);
        sigaddset(&set, SIGHUP);
@@ -50,42 +46,4 @@ context_save(void)
        lkfclose(out, ctxpath);
 
        sigprocmask(SIG_SETMASK, &oset, &set); /* reset the signal mask */
-
-       if (action == 0)
-               _exit(0);    /* we are child, time to die */
-}
-
-/*
-** This hack brought to you so we can handle set[ug]id MH programs.
-** If we return -1, then no fork is made, we update .mh_profile
-** normally, and return to the caller normally.  If we return 0,
-** then the child is executing, .mh_profile is modified after
-** we set our [ug]ids to the norm.  If we return > 0, then the
-** parent is executed and .mh_profile has already be modified.
-** We can just return to the caller immediately.
-*/
-
-static int
-m_chkids(void)
-{
-       pid_t pid;
-
-       if (getuid() == geteuid())
-               return (-1);
-
-       switch (pid = fork()) {
-       case -1:
-               break;
-
-       case 0:
-               setgid(getgid());
-               setuid(getuid());
-               break;
-
-       default:
-               pidwait(pid, -1);
-               break;
-       }
-
-       return pid;
 }