Re: [PATCH] boot parameters: quoting ofenvironmentvariablesrevisited

From: Rusty Russell
Date: Thu Oct 21 2004 - 20:36:26 EST


On Wed, 2004-10-20 at 17:53, Len Brown wrote:
> On Wed, 2004-10-20 at 03:35, Rusty Russell wrote:
> > On Wed, 2004-10-20 at 17:16, Len Brown wrote:
> > > I verified that this new patch doesn't break the
> > acpi_os_string="Brand X" kernel parameter.

OK, so this is the patch then. We strip " when we hand to __setup or
put into the environment.

Rusty.
Name: Remove quotes around environment variables
Status: Booted on 2.6-bk
Signed-off-by: Rusty Russell <rusty@xxxxxxxxxxxxxxx>

As noticed by Joey Hess (and thanks for Christoph for forwarding it).
Also requirements from Werner Almesberger.

If someone passes 'foo="some value"' the param engine removes the
quotes and hands 'foo' and 'some value'. The __setup() parameters
expect a single string, and so we try to regenerate it from the two
parts. Finally, we try to place it as an environment variable.

Werner wants quotes stripped out of the environment variable. It
makes sense to do that for __setup, too (so it sees 'foo=some value'),
since __setup functions don't usually handle quotes.

diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .23831-linux-2.6.9-bk3/init/main.c .23831-linux-2.6.9-bk3.updated/init/main.c
--- .23831-linux-2.6.9-bk3/init/main.c 2004-10-19 14:34:23.000000000 +1000
+++ .23831-linux-2.6.9-bk3.updated/init/main.c 2004-10-20 14:48:20.000000000 +1000
@@ -287,8 +287,15 @@ static int __init unknown_bootoption(cha
{
/* Change NUL term back to "=", to make "param" the whole string. */
if (val) {
- if (val[-1] == '"') val[-2] = '=';
- else val[-1] = '=';
+ /* param=val or param="val"? */
+ if (val == param+strlen(param)+1)
+ val[-1] = '=';
+ else if (val == param+strlen(param)+2) {
+ val[-2] = '=';
+ memmove(val-1, val, strlen(val)+1);
+ val--;
+ } else
+ BUG();
}

/* Handle obsolete-style parameters */

--
Anyone who quotes me in their signature is an idiot -- Rusty Russell

-
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/