[PATCH] boot parameters: quoting of environment variables

From: Werner Almesberger
Date: Sun Oct 03 2004 - 01:53:57 EST


The kernel currently allows boot parameters to be quoted (so
that they can contain spaces) in the following way:

param="value"

Unfortunately, when init/main.c:unknown_bootoption reconstructs
the parameter line for environment variables, it does not expect
that there could be two \0s between the parameter name and its
value. My patch corrects this by shifting the parameter name.

The patch is for 2.6.7, but also works with 2.6.8.1. Furthermore,
I've checked that nothing relevant seems to have changed until
2.6.9-rc3.

- Werner

---------------------------------- cut here -----------------------------------

Signed-off-by: Werner Almesberger <werner@xxxxxxxxxxxxxxx>

--- linux-2.6.7/init/main.c.orig Sun Oct 3 03:27:12 2004
+++ linux-2.6.7/init/main.c Sun Oct 3 03:44:54 2004
@@ -246,8 +246,14 @@
static int __init unknown_bootoption(char *param, char *val)
{
/* Change NUL term back to "=", to make "param" the whole string. */
- if (val)
+ if (val) {
val[-1] = '=';
+ /* If the value was quoted, shift the parameter name. */
+ if (!val[-2]) {
+ memmove(param+1,param,strlen(param));
+ param++;
+ }
+ }

/* Handle obsolete-style parameters */
if (obsolete_checksetup(param))

--
_________________________________________________________________________
/ Werner Almesberger, Buenos Aires, Argentina werner@xxxxxxxxxxxxxxx /
/_http://www.almesberger.net/____________________________________________/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/