Lines Matching refs:pwd
56 #include <pwd.h>
151 struct passwd *pwd, pwres;
222 if (getpwnam_r(user, &pwres, pwbuf, sizeof(pwbuf), &pwd) != 0 ||
223 pwd == NULL) {
245 if (*pwd->pw_passwd != '\0') {
246 namep = crypt(pass, pwd->pw_passwd);
247 if (strcmp(namep, pwd->pw_passwd) != 0) {
257 if (chdir(pwd->pw_dir) < 0) {
259 syslog(LOG_ERR, "%s does not exist for %s", pwd->pw_dir,
321 if (*pwd->pw_shell == '\0')
322 pwd->pw_shell = __UNCONST(_PATH_BSHELL);
324 setlogin(pwd->pw_name) < 0 ||
325 initgroups(pwd->pw_name, pwd->pw_gid) < 0 ||
327 setgid((gid_t)pwd->pw_gid) < 0) {
329 setgid((gid_t)pwd->pw_gid) < 0 ||
330 setuid((uid_t)pwd->pw_uid) < 0) {
342 (void)pam_setenv(pamh, "HOME", pwd->pw_dir, 1);
343 (void)pam_setenv(pamh, "SHELL", pwd->pw_shell, 1);
344 (void)pam_setenv(pamh, "USER", pwd->pw_name, 1);
345 (void)pam_setenv(pamh, "LOGNAME", pwd->pw_name, 1);
349 if (setuid((uid_t)pwd->pw_uid) < 0) {
358 (void)strlcat(homedir, pwd->pw_dir, sizeof(homedir));
359 (void)strlcat(shell, pwd->pw_shell, sizeof(shell));
360 (void)strlcat(username, pwd->pw_name, sizeof(username));
361 (void)strlcat(logname, pwd->pw_name, sizeof(logname));
364 cp = strrchr(pwd->pw_shell, '/');
368 cp = pwd->pw_shell;
371 (void)execl(pwd->pw_shell, cp, "-c", cmdbuf, NULL);
374 err(EXIT_FAILURE, "%s", pwd->pw_shell);