Adapt to pwutil.c
This commit is contained in:
@@ -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
4
sudo.c
@@ -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
12
sudo.h
@@ -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
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user