X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/8cebca1119664be52f1cbccd0ee052ae0b8c1de0..c9794733:/uip/slocal.c?ds=sidebyside diff --git a/uip/slocal.c b/uip/slocal.c index eaa7cb7c..8afef253 100644 --- a/uip/slocal.c +++ b/uip/slocal.c @@ -183,7 +183,7 @@ int main (int argc, char **argv) { int fd, status; - FILE *fp = stdin; + FILE *fp; char *cp, *mdlvr = NULL, buf[BUFSIZ]; char mailbox[BUFSIZ], tmpfil[BUFSIZ]; char **argp, **arguments; @@ -283,11 +283,15 @@ main (int argc, char **argv) umask (0077); if (geteuid() == 0) { - setgid (pw->pw_gid); + if (setgid (pw->pw_gid) != 0) { + adios ("setgid", "unable to set group to %ld", (long) pw->pw_gid); + } initgroups (pw->pw_name, pw->pw_gid); - setuid (pw->pw_uid); + if (setuid (pw->pw_uid) != 0) { + adios ("setuid", "unable to set user to %ld", (long) pw->pw_uid); + } } - + if (info == NULL) info = ""; @@ -1410,6 +1414,7 @@ suppress_duplicates (int fd, char *file) rewind (in); for (;;) { + int failed_to_lock = 0; int bufsz = sizeof buf; state = m_getfld (&gstate, name, buf, &bufsz, in); switch (state) { @@ -1447,7 +1452,8 @@ suppress_duplicates (int fd, char *file) * This will fail if your Maildelivery file doesn't * exist. */ - if ((lockfd = lkopendata(file, O_RDWR, 0)) == -1) { + if ((lockfd = lkopendata(file, O_RDWR, 0, &failed_to_lock)) + == -1) { advise (file, "unable to perform file locking on"); free (cp); fclose (in);