*** userfile.c.orig Thu Mar 27 09:04:13 1997 --- userfile.c Sat Mar 29 01:16:51 1997 *************** *** 166,171 **** --- 166,175 ---- #endif + #ifdef HAVE_LOGIN_CAP_H + #include + #endif + /* Protocol message types. */ #define USERFILE_OPEN 1 #define USERFILE_OPEN_REPLY 2 *************** *** 626,631 **** --- 630,641 ---- /* Child. We will start serving request. */ if (uid != geteuid() || uid != getuid()) { + #ifdef HAVE_LOGIN_CAP_H + struct passwd * pw = getpwuid(uid); + login_cap_t * lc = login_getuserclass(pw); + if (setusercontext(lc, pw, uid, LOGIN_SETALL&~(LOGIN_SETLOGIN|LOGIN_SETPATH|LOGIN_SETENV)) < 0) + fatal("setusercontext: %s", strerror(errno)); + #else if (setgid(gid) < 0) fatal("setgid: %s", strerror(errno)); *************** *** 636,641 **** --- 646,652 ---- if (setuid(uid) < 0) fatal("setuid: %s", strerror(errno)); + #endif /* HAVE_LOGIN_CAP_H */ } /* Enter the server main loop. */