[OpenBIOS] [commit] r1294 - trunk/openbios-devel/arch/sparc64

repository service svn at openbios.org
Mon May 12 17:43:50 CEST 2014


Author: mcayland
Date: Mon May 12 17:43:50 2014
New Revision: 1294
URL: http://tracker.coreboot.org/trac/openbios/changeset/1294

Log:
SPARC64: fix NULL pointer reference when attempting kernel boot

When checking to determine whether to boot a standalone kernel, we would
inadvertently reference a NULL pointer if no path was found. Make sure
subsequent path processing is ignored when not booting a standalone kernel
so we fall through to normal Forth boot.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland at ilande.co.uk>

Modified:
   trunk/openbios-devel/arch/sparc64/boot.c

Modified: trunk/openbios-devel/arch/sparc64/boot.c
==============================================================================
--- trunk/openbios-devel/arch/sparc64/boot.c	Mon May 12 17:43:46 2014	(r1293)
+++ trunk/openbios-devel/arch/sparc64/boot.c	Mon May 12 17:43:50 2014	(r1294)
@@ -105,24 +105,26 @@
             path = pop_fstr_copy();
 	}
 
-	param = strchr(path, ' ');
-	if(param) {
-		*param = '\0';
-		param++;
-	} else if (cmdline_size) {
-            param = (char *)qemu_cmdline;
-        } else {
-            push_str("boot-args");
-            push_str("/options");
-            fword("(find-dev)");
-            POP();
-            fword("get-package-property");
-            POP();
-            param = pop_fstr_copy();
-        }
-	
-	/* Invoke platform-specific Linux loader */
-	linux_load(&sys_info, path, param);
+        if (path) {
+            param = strchr(path, ' ');
+            if(param) {
+                *param = '\0';
+                param++;
+            } else if (cmdline_size) {
+                param = (char *)qemu_cmdline;
+            } else {
+                push_str("boot-args");
+                push_str("/options");
+                fword("(find-dev)");
+                POP();
+                fword("get-package-property");
+                POP();
+                param = pop_fstr_copy();
+            }
+
+            /* Invoke platform-specific Linux loader */
+            linux_load(&sys_info, path, param);
 
-	free(path);
+            free(path);
+        }
 }



More information about the OpenBIOS mailing list