[OpenBIOS] [PATCH 1/2] SPARC32: Remove limit on kernel command line length caused by using a static buffer

Mark Cave-Ayland mark.cave-ayland at ilande.co.uk
Fri Apr 12 16:13:55 CEST 2013


Instead use strdup() so that we can dynamically allocate the string ourselves. As
reported by Rob Landley <rob at landley.net>.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland at ilande.co.uk>
---
 openbios-devel/arch/sparc32/openbios.c |    7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/openbios-devel/arch/sparc32/openbios.c b/openbios-devel/arch/sparc32/openbios.c
index 95a5d37..56bafe8 100644
--- a/openbios-devel/arch/sparc32/openbios.c
+++ b/openbios-devel/arch/sparc32/openbios.c
@@ -835,8 +835,7 @@ static void init_memory(void)
 static void
 arch_init( void )
 {
-	static char cmdline[128];
-        int size = 0;
+	char *cmdline = { '\0' };
         const char *kernel_cmdline;
         uint32_t temp;
         uint16_t machine_id;
@@ -897,11 +896,9 @@ arch_init( void )
 
         kernel_cmdline = (const char *) fw_cfg_read_i32(FW_CFG_KERNEL_CMDLINE);
         if (kernel_cmdline) {
-            size = strlen(kernel_cmdline);
-            memcpy(cmdline, kernel_cmdline, size);
+            cmdline = strdup(kernel_cmdline);
             obp_arg.argv[1] = cmdline;
         }
-	cmdline[size] = '\0';
 	qemu_cmdline = (uint32_t)cmdline;
 
         /* Setup nvram variables */
-- 
1.7.10.4




More information about the OpenBIOS mailing list