On Sun, Aug 02, 2009 at 11:42:43PM +0200, Vladimir 'phcoder' Serbinenko wrote: > >> No. Now we have an extra element that is always present and we want to > >> remove but when we remove command line can be empty and code must > >> handle it correctly. > > > > Please try this patch. > I haven't tried it because I know it will fail if someone does > multiboot /payload > Then cmdline_argc = 0; > At the end of the loop p=cmdline; > and *(--p) = 0 will overwrite an unrelated byte and cmdline pointer > will be the same as boot_loader_name pointer and payload will recieve > "GRUB 1.96" as command line
You're right. I overlooked that the *(--p) change has a different purpose and is still needed, but that's no reason we need off-by-one loops when parsing argv. Simply discard the first member by using a separate variable like in my patch; this results in more readable code. -- Robert Millan The DRM opt-in fallacy: "Your data belongs to us. We will decide when (and how) you may access your data; but nobody's threatening your freedom: we still allow you to remove your data and not access it at all." _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel