011fe81
From c18e39b667adb11624f3f4162c1342b76712d655 Mon Sep 17 00:00:00 2001
78a3d7d
From: Vladimir Serbinenko <phcoder@gmail.com>
78a3d7d
Date: Sun, 26 Jan 2014 02:36:05 +0100
58fe9aa
Subject: [PATCH 046/152] 	* grub-core/term/serial.c
78a3d7d
 (grub_serial_register): Fix invalid free. 	Ensure that pointers are
78a3d7d
 inited to NULL and that pointers are not 	accessed after free.
78a3d7d
78a3d7d
---
78a3d7d
 ChangeLog               | 5 +++++
78a3d7d
 grub-core/term/serial.c | 8 ++++----
78a3d7d
 2 files changed, 9 insertions(+), 4 deletions(-)
78a3d7d
78a3d7d
diff --git a/ChangeLog b/ChangeLog
011fe81
index c93f11f..67b4d5c 100644
78a3d7d
--- a/ChangeLog
78a3d7d
+++ b/ChangeLog
78a3d7d
@@ -1,3 +1,8 @@
78a3d7d
+2014-01-26  Vladimir Serbinenko  <phcoder@gmail.com>
78a3d7d
+
78a3d7d
+	* grub-core/term/serial.c (grub_serial_register): Fix invalid free.
78a3d7d
+	Ensure that pointers are inited to NULL and that pointers are not
78a3d7d
+	accessed after free.
78a3d7d
 
78a3d7d
 2014-01-25  Andrey Borzenkov <arvidjaar@gmail.com>
78a3d7d
 
78a3d7d
diff --git a/grub-core/term/serial.c b/grub-core/term/serial.c
78a3d7d
index b581a76..c9b5574 100644
78a3d7d
--- a/grub-core/term/serial.c
78a3d7d
+++ b/grub-core/term/serial.c
78a3d7d
@@ -338,23 +338,23 @@ grub_serial_register (struct grub_serial_port *port)
78a3d7d
       grub_free (indata);
78a3d7d
       return grub_errno;
78a3d7d
     }
78a3d7d
-  
78a3d7d
-  out = grub_malloc (sizeof (*out));
78a3d7d
+
78a3d7d
+  out = grub_zalloc (sizeof (*out));
78a3d7d
   if (!out)
78a3d7d
     {
78a3d7d
-      grub_free (in);
78a3d7d
       grub_free (indata);
78a3d7d
       grub_free ((char *) in->name);
78a3d7d
+      grub_free (in);
78a3d7d
       return grub_errno;
78a3d7d
     }
78a3d7d
 
78a3d7d
   outdata = grub_malloc (sizeof (*outdata));
78a3d7d
   if (!outdata)
78a3d7d
     {
78a3d7d
-      grub_free (in);
78a3d7d
       grub_free (indata);
78a3d7d
       grub_free ((char *) in->name);
78a3d7d
       grub_free (out);
78a3d7d
+      grub_free (in);
78a3d7d
       return grub_errno;
78a3d7d
     }
78a3d7d
 
78a3d7d
-- 
37b39b7
1.9.3
78a3d7d