mirror of
https://github.com/sudo-project/sudo.git
synced 2025-09-04 00:05:11 +00:00
Stash umask in struct sudo_user so we don't need to look it up later.
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
#include <config.h>
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <netinet/in.h>
|
||||
#include <stdio.h>
|
||||
#ifdef STDC_HEADERS
|
||||
@@ -318,6 +319,10 @@ sudoers_policy_deserialize_info(void *v, char **runas_user, char **runas_group)
|
||||
user_ngids = ngids;
|
||||
}
|
||||
|
||||
/* Stash initial umask for later use. */
|
||||
user_umask = umask(SUDO_UMASK);
|
||||
umask(user_umask);
|
||||
|
||||
/* Setup debugging if indicated. */
|
||||
if (debug_flags != NULL) {
|
||||
sudo_debug_init(NULL, debug_flags);
|
||||
|
@@ -435,11 +435,8 @@ sudoers_policy_main(int argc, char * const argv[], int pwflag, char *env_add[],
|
||||
*/
|
||||
if (def_umask != 0777) {
|
||||
cmnd_umask = def_umask;
|
||||
if (!def_umask_override) {
|
||||
mode_t omask = umask(cmnd_umask);
|
||||
cmnd_umask |= omask;
|
||||
umask(omask);
|
||||
}
|
||||
if (!def_umask_override)
|
||||
cmnd_umask |= user_umask;
|
||||
}
|
||||
|
||||
if (ISSET(sudo_mode, MODE_LOGIN_SHELL)) {
|
||||
|
@@ -94,6 +94,7 @@ struct sudo_user {
|
||||
int cols;
|
||||
int flags;
|
||||
int max_groups;
|
||||
mode_t umask;
|
||||
uid_t uid;
|
||||
uid_t gid;
|
||||
pid_t sid;
|
||||
@@ -174,6 +175,7 @@ struct sudo_user {
|
||||
#define user_uid (sudo_user.uid)
|
||||
#define user_gid (sudo_user.gid)
|
||||
#define user_sid (sudo_user.sid)
|
||||
#define user_umask (sudo_user.umask)
|
||||
#define user_passwd (sudo_user.pw->pw_passwd)
|
||||
#define user_dir (sudo_user.pw->pw_dir)
|
||||
#define user_gids (sudo_user.gids)
|
||||
|
Reference in New Issue
Block a user