]> granicus.if.org Git - sudo/commitdiff
Add sanity checks for setenv/unsetenv
authorTodd C. Miller <Todd.Miller@courtesan.com>
Sun, 1 Mar 2009 13:52:28 +0000 (13:52 +0000)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Sun, 1 Mar 2009 13:52:28 +0000 (13:52 +0000)
env.c

diff --git a/env.c b/env.c
index edf505aa72fea120d427cb0b9ad5168f66179016..4a7a0ea32d106df3dccb161b73ce1cc5026bc798 100644 (file)
--- a/env.c
+++ b/env.c
@@ -251,6 +251,11 @@ setenv(var, val, overwrite)
     char *estring;
     size_t esize;
 
+    if (strchr(var, '=') != NULL) {
+       errno = EINVAL;
+       return(-1);
+    }
+
     esize = strlen(var) + 1 + strlen(val) + 1;
     estring = emalloc(esize);
 
@@ -279,6 +284,11 @@ unsetenv(var)
     char **ep;
     size_t len;
 
+    if (strchr(var, '=') != NULL) {
+       errno = EINVAL;
+       return(-1);
+    }
+
     /* Make sure we are operating on the current environment. */
     if (env.envp != environ) {
        for (ep = environ; *ep != NULL; ep++)