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. */
|
/* Close password, group and other fds so we don't leak. */
|
||||||
sudo_endpwent();
|
sudo_endpwent();
|
||||||
sudo_endgrent();
|
sudo_endgrent();
|
||||||
|
pwcache_destroy();
|
||||||
closefrom(STDERR_FILENO + 1);
|
closefrom(STDERR_FILENO + 1);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
4
sudo.c
4
sudo.c
@@ -195,6 +195,7 @@ main(argc, argv, envp)
|
|||||||
initial_setup();
|
initial_setup();
|
||||||
sudo_setpwent();
|
sudo_setpwent();
|
||||||
sudo_setgrent();
|
sudo_setgrent();
|
||||||
|
pwcache_init();
|
||||||
|
|
||||||
/* Parse our arguments. */
|
/* Parse our arguments. */
|
||||||
sudo_mode = parse_args(Argc, Argv);
|
sudo_mode = parse_args(Argc, Argv);
|
||||||
@@ -408,6 +409,7 @@ main(argc, argv, envp)
|
|||||||
/* Close the password and group files */
|
/* Close the password and group files */
|
||||||
sudo_endpwent();
|
sudo_endpwent();
|
||||||
sudo_endgrent();
|
sudo_endgrent();
|
||||||
|
pwcache_destroy();
|
||||||
|
|
||||||
/* Install the real environment. */
|
/* Install the real environment. */
|
||||||
environ = new_environ;
|
environ = new_environ;
|
||||||
@@ -1145,7 +1147,7 @@ get_authpw()
|
|||||||
void
|
void
|
||||||
cleanup()
|
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_ECHO 0x01 /* leave echo on when reading passwd */
|
||||||
#define TGP_STDIN 0x02 /* read from stdin, not /dev/tty */
|
#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 passwd;
|
||||||
struct timespec;
|
struct timespec;
|
||||||
struct timeval;
|
struct timeval;
|
||||||
@@ -257,6 +267,8 @@ struct passwd *sudo_getpwuid __P((uid_t));
|
|||||||
struct passwd *sudo_fakepwuid __P((uid_t));
|
struct passwd *sudo_fakepwuid __P((uid_t));
|
||||||
struct group *sudo_getgrnam __P((const char *));
|
struct group *sudo_getgrnam __P((const char *));
|
||||||
struct group *sudo_getgrgid __P((gid_t));
|
struct group *sudo_getgrgid __P((gid_t));
|
||||||
|
void pwcache_init __P((void));
|
||||||
|
void pwcache_destroy __P((void));
|
||||||
#ifdef HAVE_SYSTRACE
|
#ifdef HAVE_SYSTRACE
|
||||||
void systrace_attach __P((pid_t));
|
void systrace_attach __P((pid_t));
|
||||||
#endif
|
#endif
|
||||||
|
@@ -119,6 +119,10 @@ main(argc, argv)
|
|||||||
Argv = argv;
|
Argv = argv;
|
||||||
Argc = argc;
|
Argc = argc;
|
||||||
|
|
||||||
|
setpwent();
|
||||||
|
setgrent();
|
||||||
|
pwcache_init();
|
||||||
|
|
||||||
memset(&pw, 0, sizeof(pw));
|
memset(&pw, 0, sizeof(pw));
|
||||||
sudo_user.pw = &pw;
|
sudo_user.pw = &pw;
|
||||||
memset(&rpw, 0, sizeof(rpw));
|
memset(&rpw, 0, sizeof(rpw));
|
||||||
@@ -134,7 +138,8 @@ main(argc, argv)
|
|||||||
user_host = optarg;
|
user_host = optarg;
|
||||||
break;
|
break;
|
||||||
case 'u':
|
case 'u':
|
||||||
user_runas = &optarg;
|
/* XXX - call getpwnam() */
|
||||||
|
runas_pw->pw_name = optarg;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
usage();
|
usage();
|
||||||
@@ -193,7 +198,10 @@ main(argc, argv)
|
|||||||
|
|
||||||
/* Initialize default values. */
|
/* Initialize default values. */
|
||||||
init_defaults();
|
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 ip addr/mask for each interface. */
|
||||||
load_interfaces();
|
load_interfaces();
|
||||||
@@ -286,38 +294,10 @@ set_perms(perm)
|
|||||||
return;
|
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
|
void
|
||||||
cleanup()
|
cleanup()
|
||||||
{
|
{
|
||||||
return;
|
pwcache_destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
Reference in New Issue
Block a user