]> granicus.if.org Git - sudo/commitdiff
sudo_pwdup() was not expanding an empty pw_shell to _PATH_BSHELL
authorTodd C. Miller <Todd.Miller@courtesan.com>
Mon, 26 Jul 2010 16:34:27 +0000 (12:34 -0400)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Mon, 26 Jul 2010 16:34:27 +0000 (12:34 -0400)
--HG--
branch : 1.7

pwutil.c

index 3bdc88a8854ba3fd250edb1618d830112b4a13f2..35524f355ee3220921b276b1dfc0c6f5e40e9597 100644 (file)
--- a/pwutil.c
+++ b/pwutil.c
@@ -135,7 +135,9 @@ sudo_pwdup(pw)
 #endif
     FIELD_SIZE(pw, pw_gecos, gsize);
     FIELD_SIZE(pw, pw_dir, dsize);
-    FIELD_SIZE(pw, pw_shell, ssize);
+    /* Treat shell specially since we expand "" -> _PATH_BSHELL */
+    ssize = strlen(pw_shell) + 1;
+    total += ssize;
 
     if ((cp = malloc(total)) == NULL)
            return(NULL);
@@ -154,7 +156,9 @@ sudo_pwdup(pw)
 #endif
     FIELD_COPY(pw, newpw, pw_gecos, gsize);
     FIELD_COPY(pw, newpw, pw_dir, dsize);
-    FIELD_COPY(pw, newpw, pw_shell, ssize);
+    /* Treat shell specially since we expand "" -> _PATH_BSHELL */
+    memcpy(cp, pw_shell, ssize);
+    newpw->pw_shell = cp;
 
     return(newpw);
 }