2
0
mirror of https://github.com/sudo-project/sudo.git synced 2025-09-03 07:45:47 +00:00

Stash umask in struct sudo_user so we don't need to look it up later.

This commit is contained in:
Todd C. Miller
2013-03-28 15:40:32 -04:00
parent 5bac16f5cc
commit 38dac1e0a4
3 changed files with 9 additions and 5 deletions

View File

@@ -17,6 +17,7 @@
#include <config.h> #include <config.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h>
#include <netinet/in.h> #include <netinet/in.h>
#include <stdio.h> #include <stdio.h>
#ifdef STDC_HEADERS #ifdef STDC_HEADERS
@@ -318,6 +319,10 @@ sudoers_policy_deserialize_info(void *v, char **runas_user, char **runas_group)
user_ngids = ngids; user_ngids = ngids;
} }
/* Stash initial umask for later use. */
user_umask = umask(SUDO_UMASK);
umask(user_umask);
/* Setup debugging if indicated. */ /* Setup debugging if indicated. */
if (debug_flags != NULL) { if (debug_flags != NULL) {
sudo_debug_init(NULL, debug_flags); sudo_debug_init(NULL, debug_flags);

View File

@@ -435,11 +435,8 @@ sudoers_policy_main(int argc, char * const argv[], int pwflag, char *env_add[],
*/ */
if (def_umask != 0777) { if (def_umask != 0777) {
cmnd_umask = def_umask; cmnd_umask = def_umask;
if (!def_umask_override) { if (!def_umask_override)
mode_t omask = umask(cmnd_umask); cmnd_umask |= user_umask;
cmnd_umask |= omask;
umask(omask);
}
} }
if (ISSET(sudo_mode, MODE_LOGIN_SHELL)) { if (ISSET(sudo_mode, MODE_LOGIN_SHELL)) {

View File

@@ -94,6 +94,7 @@ struct sudo_user {
int cols; int cols;
int flags; int flags;
int max_groups; int max_groups;
mode_t umask;
uid_t uid; uid_t uid;
uid_t gid; uid_t gid;
pid_t sid; pid_t sid;
@@ -174,6 +175,7 @@ struct sudo_user {
#define user_uid (sudo_user.uid) #define user_uid (sudo_user.uid)
#define user_gid (sudo_user.gid) #define user_gid (sudo_user.gid)
#define user_sid (sudo_user.sid) #define user_sid (sudo_user.sid)
#define user_umask (sudo_user.umask)
#define user_passwd (sudo_user.pw->pw_passwd) #define user_passwd (sudo_user.pw->pw_passwd)
#define user_dir (sudo_user.pw->pw_dir) #define user_dir (sudo_user.pw->pw_dir)
#define user_gids (sudo_user.gids) #define user_gids (sudo_user.gids)