[OpenBIOS] r155 - in openbios-devel: arch/sparc32 drivers modules

svn at openbios.org svn at openbios.org
Wed Jun 27 22:16:02 CEST 2007


Author: blueswirl
Date: 2007-06-27 22:16:01 +0200 (Wed, 27 Jun 2007)
New Revision: 155

Modified:
   openbios-devel/arch/sparc32/boot.c
   openbios-devel/drivers/esp.c
   openbios-devel/drivers/obio.c
   openbios-devel/modules/bindings.c
   openbios-devel/modules/video.c
Log:
Fix pop_fstr_copy memory leaks
- console one prevented Debian 3.1r1 from installing in console=prom mode
- fixing this also needed the real malloc/free



Modified: openbios-devel/arch/sparc32/boot.c
===================================================================
--- openbios-devel/arch/sparc32/boot.c	2007-06-27 20:11:08 UTC (rev 154)
+++ openbios-devel/arch/sparc32/boot.c	2007-06-27 20:16:01 UTC (rev 155)
@@ -45,18 +45,18 @@
             } else {
                 switch (boot_device) {
                 case 'a':
-                    path = "/obio/SUNW,fdtwo";
+                    path = strdup("/obio/SUNW,fdtwo");
                     oldpath = "fd()";
                     unit = 0;
                     break;
                 case 'c':
-                    path = "disk";
+                    path = strdup("disk");
                     oldpath = "sd(0,0,0):d";
                     unit = 0;
                     break;
                 default:
                 case 'd':
-                    path = "cdrom";
+                    path = strdup("cdrom");
                     // FIXME: hardcoding this looks almost definitely wrong.
                     // With sd(0,2,0):b we get to see the solaris kernel though
                     //oldpath = "sd(0,2,0):d";
@@ -64,7 +64,7 @@
                     unit = 2;
                     break;
                 case 'n':
-                    path = "net";
+                    path = strdup("net");
                     oldpath = "le()";
                     unit = 0;
                     break;

Modified: openbios-devel/drivers/esp.c
===================================================================
--- openbios-devel/drivers/esp.c	2007-06-27 20:11:08 UTC (rev 154)
+++ openbios-devel/drivers/esp.c	2007-06-27 20:16:01 UTC (rev 155)
@@ -279,8 +279,14 @@
     *sd = &global_esp->sd[id];
 
 #ifdef CONFIG_DEBUG_ESP
-    fword("my-args");
-    DPRINTF("opening drive %d args %s\n", id, pop_fstr_copy());
+    {
+        char *args;
+
+        fword("my-args");
+        args = pop_fstr_copy();
+        DPRINTF("opening drive %d args %s\n", id, args);
+        free(args);
+    }
 #endif
 
     selfword("open-deblocker");

Modified: openbios-devel/drivers/obio.c
===================================================================
--- openbios-devel/drivers/obio.c	2007-06-27 20:11:08 UTC (rev 154)
+++ openbios-devel/drivers/obio.c	2007-06-27 20:16:01 UTC (rev 155)
@@ -223,10 +223,13 @@
     *address = *prop;
     fword("my-args");
     args = pop_fstr_copy();
-    if (args && args[0] == 'a')
-        *address += 4;
+    if (args) {
+        if (args[0] == 'a')
+            *address += 4;
+        //printk("zs_open: address %lx, args %s\n", *address, args);
+        free(args);
+    }
 
-    //printk("zs_open: address %lx, args %s\n", *address, args);
     RET ( -1 );
 }
 

Modified: openbios-devel/modules/bindings.c
===================================================================
--- openbios-devel/modules/bindings.c	2007-06-27 20:11:08 UTC (rev 154)
+++ openbios-devel/modules/bindings.c	2007-06-27 20:16:01 UTC (rev 155)
@@ -253,6 +253,8 @@
 	if( !len )
 		return NULL;
 	str = malloc( len + 1 );
+        if( !str )
+                return NULL;
 	memcpy( str, p, len );
 	str[len] = 0;
 	return str;

Modified: openbios-devel/modules/video.c
===================================================================
--- openbios-devel/modules/video.c	2007-06-27 20:11:08 UTC (rev 154)
+++ openbios-devel/modules/video.c	2007-06-27 20:16:01 UTC (rev 155)
@@ -253,6 +253,7 @@
     addr = pop_fstr_copy();
 
     console_draw_str(addr);
+    free(addr);
     PUSH(len);
 }
 




More information about the OpenBIOS mailing list