Check for illegal character '=' in environment variable names.
authorWolfgang Denk <wd@denx.de>
Fri, 27 Oct 2006 23:14:32 +0000 (01:14 +0200)
committerWolfgang Denk <wd@denx.de>
Fri, 27 Oct 2006 23:14:32 +0000 (01:14 +0200)
Make sure the string passed as variable name does not contain a '='
character. This not only prevents the common error or typing
"setenv foo=bar" instead of "setenv foo bar", but (more importantly)
also closes a backdoor which allowed to delete write-protected
environment variables, for example by using "setenv ethaddr=".

common/cmd_nvedit.c

index 6257fbd23e6d0703213bcc59b14a487bf52f4707..d3f50f87f352287a1dc1a082f3593697160da5d4 100644 (file)
@@ -167,6 +167,11 @@ int _do_setenv (int flag, int argc, char *argv[])
 
        name = argv[1];
 
+       if (strchr(name, '=')) {
+               printf ("## Error: illegal character '=' in variable name \"%s\"\n", name);
+               return 1;
+       }
+
        /*
         * search if variable with this name already exists
         */