aboutsummaryrefslogtreecommitdiffhomepage
path: root/contrib/notmuch-deliver/numlib/changeuidgid.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/notmuch-deliver/numlib/changeuidgid.c')
-rw-r--r--contrib/notmuch-deliver/numlib/changeuidgid.c111
1 files changed, 0 insertions, 111 deletions
diff --git a/contrib/notmuch-deliver/numlib/changeuidgid.c b/contrib/notmuch-deliver/numlib/changeuidgid.c
deleted file mode 100644
index 56793927..00000000
--- a/contrib/notmuch-deliver/numlib/changeuidgid.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
-** Copyright 1998 - 2002 Double Precision, Inc. See COPYING for
-** distribution information.
-*/
-
-#if HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <sys/types.h>
-#if HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <grp.h>
-#include <pwd.h>
-#include <errno.h>
-
-#include "numlib.h"
-
-static const char rcsid[]="$Id: changeuidgid.c,v 1.2 2003/01/05 04:01:17 mrsam Exp $";
-
-void libmail_changegroup(gid_t gid)
-{
- if ( setgid(gid))
- {
- perror("setgid");
- exit(1);
- }
-
-#if HAVE_SETGROUPS
- if ( getuid() == 0 && setgroups(1, &gid) )
- {
- perror("setgroups");
- exit(1);
- }
-#endif
-}
-
-void libmail_changeuidgid(uid_t uid, gid_t gid)
-{
- libmail_changegroup(gid);
- if ( setuid(uid))
- {
- perror("setuid");
- exit(1);
- }
-}
-
-void libmail_changeusername(const char *uname, const gid_t *forcegrp)
-{
-struct passwd *pw;
-uid_t changeuid;
-gid_t changegid;
-
-/* uname might be a pointer returned from a previous called to getpw(),
-** and libc has a problem getting it back.
-*/
-char *p=malloc(strlen(uname)+1);
-
- if (!p)
- {
- perror("malloc");
- exit(1);
- }
- strcpy(p, uname);
-
- errno=ENOENT;
- if ((pw=getpwnam(p)) == 0)
- {
- free(p);
- perror("getpwnam");
- exit(1);
- }
- free(p);
-
- changeuid=pw->pw_uid;
-
- if ( !forcegrp ) forcegrp= &pw->pw_gid;
-
- changegid= *forcegrp;
-
- if ( setgid( changegid ))
- {
- perror("setgid");
- exit(1);
- }
-
-#if HAVE_INITGROUPS
- if ( getuid() == 0 && initgroups(pw->pw_name, changegid) )
- {
- perror("initgroups");
- exit(1);
- }
-#else
-#if HAVE_SETGROUPS
- if ( getuid() == 0 && setgroups(1, &changegid) )
- {
- perror("setgroups");
- exit(1);
- }
-#endif
-#endif
-
- if (setuid(changeuid))
- {
- perror("setuid");
- exit(1);
- }
-}