Change breaks modprobe/insmod with spaces in parameters, commit 1396221d5a741ef8e1e8abca88836b341a3cab84

Denys Vlasenko vda.linux at googlemail.com
Tue Feb 1 22:25:03 UTC 2011


On Tuesday 01 February 2011 19:48, Ralf Friedl wrote:
> Hi
> 
> The commit 
> http://git.buildroot.org/busybox/commit/?id=1396221d5a741ef8e1e8abca88836b341a3cab84 
> breaks modprobe/insmod with spaces inside the parameters.
> 
> When calling
>     modprobe -v iptable_filter forward='1 2'
> the old version did
>     init_module(0x499838, 5306, "\"forward=1 2\" ") = 0
> while the new version does
>     init_module(0x491838, 5306, "forward=1 2 ") = -1 ENOENT (No such 
> file or directory)
> And dmesg says
>     iptable_filter: Unknown parameter `2'
> 
> The kernel considers the '2' after the space to be the name of another 
> parameter and not part of the value of forward. From the comments, this 
> change seems intentional, but I don't see any advantage of this patch. 
> Actually it seems obvious that the kernel can't recognize parameters 
> with spaces after this patch.
> If it's just about code size, using the quotes always should also be 
> possible.

Hmm. You are right. Reverting.

But even old behavior wasn't exactly correct. It was doing:

init_module(0x8c8e1b8, 4744, "\"forward=1 2\" ") = -1 ENOENT (No such file or directory)


whereas module-init-tools version 3.11.1 does:

init_module(0xf6eab0, 4744, "forward=\"1 2\"") = -1 ENOENT (No such file or directory)

See? qoutes should be around value only.


-- 
vda


More information about the busybox mailing list