[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[2499] 2009-08-14 Vladimir Serbinenko <address@hidden>
From: |
Vladimir Serbinenko |
Subject: |
[2499] 2009-08-14 Vladimir Serbinenko <address@hidden> |
Date: |
Fri, 14 Aug 2009 15:19:24 +0000 |
Revision: 2499
http://svn.sv.gnu.org/viewvc/?view=rev&root=grub&revision=2499
Author: phcoder
Date: 2009-08-14 15:19:24 +0000 (Fri, 14 Aug 2009)
Log Message:
-----------
2009-08-14 Vladimir Serbinenko <address@hidden>
* loader/i386/multiboot.c (grub_multiboot): Don't pass filename to
payload.
(grub_module): Likewise.
Modified Paths:
--------------
trunk/grub2/ChangeLog
trunk/grub2/loader/i386/multiboot.c
Modified: trunk/grub2/ChangeLog
===================================================================
--- trunk/grub2/ChangeLog 2009-08-14 15:15:33 UTC (rev 2498)
+++ trunk/grub2/ChangeLog 2009-08-14 15:19:24 UTC (rev 2499)
@@ -1,5 +1,11 @@
2009-08-14 Vladimir Serbinenko <address@hidden>
+ * loader/i386/multiboot.c (grub_multiboot): Don't pass filename to
+ payload.
+ (grub_module): Likewise.
+
+2009-08-14 Vladimir Serbinenko <address@hidden>
+
* loader/i386/multiboot.c (grub_multiboot_unload): Don't free mbi and
mbi->cmdline but free playground.
Modified: trunk/grub2/loader/i386/multiboot.c
===================================================================
--- trunk/grub2/loader/i386/multiboot.c 2009-08-14 15:15:33 UTC (rev 2498)
+++ trunk/grub2/loader/i386/multiboot.c 2009-08-14 15:19:24 UTC (rev 2499)
@@ -201,6 +201,8 @@
grub_ssize_t len, cmdline_length, boot_loader_name_length;
grub_uint32_t mmap_length;
int i;
+ int cmdline_argc;
+ char **cmdline_argv;
grub_loader_unset ();
@@ -257,9 +259,16 @@
mmap_length = grub_get_multiboot_mmap_len ();
/* Figure out cmdline length. */
- for (i = 0, cmdline_length = 0; i < argc; i++)
- cmdline_length += grub_strlen (argv[i]) + 1;
+ /* Skip filename. */
+ cmdline_argc = argc - 1;
+ cmdline_argv = argv + 1;
+ for (i = 0, cmdline_length = 0; i < cmdline_argc; i++)
+ cmdline_length += grub_strlen (cmdline_argv[i]) + 1;
+
+ if (cmdline_length == 0)
+ cmdline_length = 1;
+
boot_loader_name_length = sizeof(PACKAGE_STRING);
#define cmdline_addr(x) ((void *) ((x) + code_size))
@@ -351,14 +360,16 @@
if (! cmdline)
goto fail;
- for (i = 0; i < argc; i++)
+ for (i = 0; i < cmdline_argc; i++)
{
- p = grub_stpcpy (p, argv[i]);
+ p = grub_stpcpy (p, cmdline_argv[i]);
*(p++) = ' ';
}
/* Remove the space after the last word. */
- *(--p) = '\0';
+ if (p != cmdline)
+ p--;
+ *p = 0;
mbi->flags |= MULTIBOOT_INFO_CMDLINE;
mbi->cmdline = (grub_uint32_t) cmdline_addr (grub_multiboot_payload_dest);
@@ -393,6 +404,8 @@
grub_ssize_t size, len = 0;
char *module = 0, *cmdline = 0, *p;
int i;
+ int cmdline_argc;
+ char **cmdline_argv;
if (argc == 0)
{
@@ -422,21 +435,30 @@
goto fail;
}
- for (i = 0; i < argc; i++)
- len += grub_strlen (argv[i]) + 1;
+ /* Skip module name. */
+ cmdline_argc = argc - 1;
+ cmdline_argv = argv + 1;
+ for (i = 0; i < cmdline_argc; i++)
+ len += grub_strlen (cmdline_argv[i]) + 1;
+
+ if (len == 0)
+ len = 1;
+
cmdline = p = grub_malloc (len);
if (! cmdline)
goto fail;
- for (i = 0; i < argc; i++)
+ for (i = 0; i < cmdline_argc; i++)
{
- p = grub_stpcpy (p, argv[i]);
+ p = grub_stpcpy (p, cmdline_argv[i]);
*(p++) = ' ';
}
/* Remove the space after the last word. */
- *(--p) = '\0';
+ if (p != cmdline)
+ p--;
+ *p = '\0';
if (mbi->flags & MULTIBOOT_INFO_MODS)
{
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [2499] 2009-08-14 Vladimir Serbinenko <address@hidden>,
Vladimir Serbinenko <=