--- checkpassword.orig Thu Sep 19 01:37:13 2002 +++ checkpassword.c Thu Sep 19 01:40:26 2002 @@ -27,8 +27,12 @@ char *password; char *encrypted; char *stored; + char groupid[10]; + char userid[10]; int r; int i; + int gid; + int uid; if (!argv[1]) _exit(2); @@ -54,7 +58,11 @@ pw = getpwnam(login); if (pw) + { + gid = pw->pw_gid; + uid = pw->pw_uid; stored = pw->pw_passwd; + } else { if (errno == error_txtbsy) _exit(111); _exit(1); @@ -80,9 +88,14 @@ if (!*stored || strcmp(encrypted,stored)) _exit(1); - if (prot_gid((int) pw->pw_gid) == -1) _exit(1); - if (prot_uid((int) pw->pw_uid) == -1) _exit(1); +// if (prot_gid((int) pw->pw_gid) == -1) _exit(1); +// if (prot_uid((int) pw->pw_uid) == -1) _exit(1); if (chdir(pw->pw_dir) == -1) _exit(111); + if (sprintf(userid, "%d", uid) < 1) _exit(1); + if (sprintf(groupid, "%d", gid) < 1) _exit(1); + + if (!pathexec_env("GID",groupid)) _exit(111); + if (!pathexec_env("UID",userid)) _exit(111); if (!pathexec_env("USER",pw->pw_name)) _exit(111); if (!pathexec_env("HOME",pw->pw_dir)) _exit(111);