Adapt to pwutil.c

This commit is contained in:
Todd C. Miller
2005-01-05 01:10:16 +00:00
parent 3c58acdc02
commit a5d9296d25
5 changed files with 34 additions and 32 deletions

View File

@@ -493,6 +493,7 @@ send_mail(line)
/* Close password, group and other fds so we don't leak. */
sudo_endpwent();
sudo_endgrent();
pwcache_destroy();
closefrom(STDERR_FILENO + 1);
/*

4
sudo.c
View File

@@ -195,6 +195,7 @@ main(argc, argv, envp)
initial_setup();
sudo_setpwent();
sudo_setgrent();
pwcache_init();
/* Parse our arguments. */
sudo_mode = parse_args(Argc, Argv);
@@ -408,6 +409,7 @@ main(argc, argv, envp)
/* Close the password and group files */
sudo_endpwent();
sudo_endgrent();
pwcache_destroy();
/* Install the real environment. */
environ = new_environ;
@@ -1145,7 +1147,7 @@ get_authpw()
void
cleanup()
{
return;
pwcache_destroy();
}
/*

12
sudo.h
View File

@@ -161,6 +161,16 @@ struct sudo_user {
#define TGP_ECHO 0x01 /* leave echo on when reading passwd */
#define TGP_STDIN 0x02 /* read from stdin, not /dev/tty */
/*
* Second param of pwcache_{get,put}
*/
enum cmptype {
bypwnam,
byuid,
bygrnam,
bygid
};
struct passwd;
struct timespec;
struct timeval;
@@ -257,6 +267,8 @@ struct passwd *sudo_getpwuid __P((uid_t));
struct passwd *sudo_fakepwuid __P((uid_t));
struct group *sudo_getgrnam __P((const char *));
struct group *sudo_getgrgid __P((gid_t));
void pwcache_init __P((void));
void pwcache_destroy __P((void));
#ifdef HAVE_SYSTRACE
void systrace_attach __P((pid_t));
#endif

View File

@@ -119,6 +119,10 @@ main(argc, argv)
Argv = argv;
Argc = argc;
setpwent();
setgrent();
pwcache_init();
memset(&pw, 0, sizeof(pw));
sudo_user.pw = &pw;
memset(&rpw, 0, sizeof(rpw));
@@ -134,7 +138,8 @@ main(argc, argv)
user_host = optarg;
break;
case 'u':
user_runas = &optarg;
/* XXX - call getpwnam() */
runas_pw->pw_name = optarg;
break;
default:
usage();
@@ -193,7 +198,10 @@ main(argc, argv)
/* Initialize default values. */
init_defaults();
runas_pw->pw_name = *user_runas;
if (runas_pw->pw_name)
user_runas = &runas_pw->pw_name;
else
runas_pw->pw_name = *user_runas;
/* Load ip addr/mask for each interface. */
load_interfaces();
@@ -286,38 +294,10 @@ set_perms(perm)
return;
}
struct passwd *
sudo_getpwuid(uid)
uid_t uid;
{
return(getpwuid(uid));
}
struct passwd *
sudo_getpwnam(name)
const char *name;
{
return(getpwnam(name));
}
struct group *
sudo_getgrgid(gid)
gid_t gid;
{
return(getgrgid(gid));
}
struct group *
sudo_getgrnam(name)
const char *name;
{
return(getgrnam(name));
}
void
cleanup()
{
return;
pwcache_destroy();
}
void

View File

@@ -555,6 +555,13 @@ user_is_exempt()
return(FALSE);
}
char *
sudo_getepw(pw)
const struct passwd *pw;
{
return (pw->pw_passwd);
}
/* STUB */
struct passwd *
sudo_getpwuid(uid)