diff --git a/ChangeLog b/ChangeLog index c93f11fbb..67b4d5c2a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2014-01-26 Vladimir Serbinenko + + * grub-core/term/serial.c (grub_serial_register): Fix invalid free. + Ensure that pointers are inited to NULL and that pointers are not + accessed after free. 2014-01-25 Andrey Borzenkov diff --git a/grub-core/term/serial.c b/grub-core/term/serial.c index b581a763e..c9b5574ae 100644 --- a/grub-core/term/serial.c +++ b/grub-core/term/serial.c @@ -338,23 +338,23 @@ grub_serial_register (struct grub_serial_port *port) grub_free (indata); return grub_errno; } - - out = grub_malloc (sizeof (*out)); + + out = grub_zalloc (sizeof (*out)); if (!out) { - grub_free (in); grub_free (indata); grub_free ((char *) in->name); + grub_free (in); return grub_errno; } outdata = grub_malloc (sizeof (*outdata)); if (!outdata) { - grub_free (in); grub_free (indata); grub_free ((char *) in->name); grub_free (out); + grub_free (in); return grub_errno; }