I have tried the latest GRUB CVS with the linux kernel command line parser work-around and verified that I can boot into a shell (/bin/sh -> really it is ash.static) prompt. Thanks OKUJI! On Tue, 12 Sep 2000, OKUJI Yoshinori wrote: > I found a bug in the command-line parser, parse_options in > init/main.c. I examined only 2.2.16 and 2.2.17, but there might remain > the same problem in 2.4.0-test?. > > The phenomenon is that argv_init becomes {"init", "", NULL}, when > one inputs a command-line like: > > root=/dev/ram ro > ^^ > two spaces > > This is harmful for some shell programs. You might think he just > need to be careful enough not to insert multiple spaces between two > options, but things are not so trivial. On i386 (I haven't tested any > other architecture), "mem=XXX" is handled in arch/i386/kernel/setup.c > but the function setup_arch doesn't remove any space after the option > correctly, so if the user enters "mem=128M root=/dev/hda", the string > command_line returned by the function setup_arch will be > " root=/dev/hda" instead of "root=/dev/hda", and then argv_init will > be {"init", "", NULL}, even though the user doesn't input multiple > spaces. > > It is possible to avoid this problem in boot loaders (yes, in fact, > I did in GRUB), but I think it would be better to fix the bug itself > in Linux. Thus, I propose this simple patch: > > *** linux-2.2.17.orig/init/main.c Tue Sep 5 02:39:28 2000 > --- linux-2.2.17/init/main.c Tue Sep 12 06:02:34 2000 > *************** > *** 1254,1259 **** > --- 1254,1262 ---- > } > if (next != NULL) > *next++ = 0; > + if (!*line) > + continue; > + > /* > * check for kernel options first.. > */ > > > Thanks, > Okuji > - > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to [EMAIL PROTECTED] > Please read the FAQ at http://www.tux.org/lkml/ > -- Chan Shih-Ping (Richard) <[EMAIL PROTECTED]> DSO National Laboratories 20 Science Park Drive Singapore 118230