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  */
13 
14 /*
15  * Program:	Standard 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  */
28 
29 /* Log in
30  * Accepts: login passwd struct
31  *	    argument count
32  *	    argument vector
33  * Returns: T if success, NIL otherwise
34  */
35 
loginpw(struct passwd * pw,int argc,char * argv[])36 long loginpw (struct passwd *pw,int argc,char *argv[])
37 {
38   uid_t uid = pw->pw_uid;
39   char *name = cpystr (pw->pw_name);
40   long ret = !(setgid (pw->pw_gid) || initgroups (name,pw->pw_gid) ||
41 	       setuid (uid));
42   fs_give ((void **) &name);
43   return ret;
44 }
45