imapext-2007

view src/osdep/unix/log_bsi.c @ 0:ada5e610ab86

imap-2007e
author yuuji@gentei.org
date Mon, 14 Sep 2009 15:17:45 +0900
parents
children
line source
1 /* ========================================================================
2 * Copyright 1988-2006 University of Washington
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 *
11 * ========================================================================
12 */
14 /*
15 * Program: BSI login
16 *
17 * Author: Mark Crispin
18 * Networks and Distributed Computing
19 * Computing & Communications
20 * University of Washington
21 * Administration Building, AG-44
22 * Seattle, WA 98195
23 * Internet: MRC@CAC.Washington.EDU
24 *
25 * Date: 1 August 1988
26 * Last Edited: 30 August 2006
27 */
29 /* Log in
30 * Accepts: login passwd struct
31 * argument count
32 * argument vector
33 * Returns: T if success, NIL otherwise
34 */
36 long loginpw (struct passwd *pw,int argc,char *argv[])
37 {
38 long ret = NIL;
39 uid_t euid = geteuid ();
40 login_cap_t *lc = login_getclass (pw->pw_class);
41 /* have class and can become user? */
42 if (lc && !seteuid (pw->pw_uid)) {
43 /* ask for approval */
44 if (auth_approve (lc,pw->pw_name,
45 (char *) mail_parameters (NIL,GET_SERVICENAME,NIL)) <= 0)
46 seteuid (euid); /* not approved, restore root euid */
47 else { /* approved */
48 seteuid (euid); /* restore former root euid first */
49 setsid (); /* ensure we are session leader */
50 /* log the guy in */
51 ret = !setusercontext (lc,pw,pw->pw_uid,LOGIN_SETALL&~LOGIN_SETPATH);
52 }
53 }
54 return ret;
55 }

UW-IMAP'd extensions by yuuji