From 9f903d3bdd61c22bae85954b30127f11352246d4 Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" Date: Sun, 30 Oct 2016 09:09:12 -0600 Subject: [PATCH] In sudo_mkdir_parents() inherit the gid of / instead of using gid 0 for the first component. --- plugins/sudoers/mkdir_parents.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/plugins/sudoers/mkdir_parents.c b/plugins/sudoers/mkdir_parents.c index e2a7ca1ac..53f1feb72 100644 --- a/plugins/sudoers/mkdir_parents.c +++ b/plugins/sudoers/mkdir_parents.c @@ -40,13 +40,18 @@ bool sudo_mkdir_parents(char *path, uid_t uid, gid_t *gidp, mode_t mode, bool quiet) { struct stat sb; - gid_t parent_gid; + gid_t parent_gid = 0; char *slash = path; bool rval = true; debug_decl(sudo_mkdir_parents, SUDOERS_DEBUG_UTIL) + /* If no gid specified, inherit from parent dir. */ + if (*gidp != (gid_t)-1) + parent_gid = *gidp; + else if (stat("/", &sb) == 0) + parent_gid = sb.st_gid; + /* Create parent directories as needed. */ - parent_gid = *gidp != (gid_t)-1 ? *gidp : 0; while ((slash = strchr(slash + 1, '/')) != NULL) { *slash = '\0'; sudo_debug_printf(SUDO_DEBUG_DEBUG|SUDO_DEBUG_LINENO, -- 2.40.0