From: Vladimir 'phcoder' Serbinenko Date: Thu, 21 Jan 2010 23:07:28 +0000 (+0100) Subject: 2010-01-21 Vladimir Serbinenko X-Git-Tag: 1.98~130 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d645e0f8e8e9243ad193df4fd2b4bbc97ec79121;p=thirdparty%2Fgrub.git 2010-01-21 Vladimir Serbinenko * term/ieee1275/ofconsole.c (grub_ofconsole_dimensions): Allocate on stack since heap is unavailable at that point. --- diff --git a/ChangeLog b/ChangeLog index f5bb1617b..f227f5dbc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2010-01-21 Vladimir Serbinenko + + * term/ieee1275/ofconsole.c (grub_ofconsole_dimensions): Allocate on + stack since heap is unavailable at that point. + 2010-01-21 Vladimir Serbinenko * include/grub/i386/bsd.h (FREEBSD_N_BIOS_GEOM): Removed. diff --git a/term/ieee1275/ofconsole.c b/term/ieee1275/ofconsole.c index dd4270eff..3799e2e27 100644 --- a/term/ieee1275/ofconsole.c +++ b/term/ieee1275/ofconsole.c @@ -245,37 +245,28 @@ static void grub_ofconsole_dimensions (void) { grub_ieee1275_ihandle_t options; - char *val; grub_ssize_t lval; if (! grub_ieee1275_finddevice ("/options", &options) && options != (grub_ieee1275_ihandle_t) -1) { if (! grub_ieee1275_get_property_length (options, "screen-#columns", - &lval) && lval != -1) + &lval) + && lval >= 0 && lval < 1024) { - val = grub_malloc (lval); - if (val) - { - if (! grub_ieee1275_get_property (options, "screen-#columns", - val, lval, 0)) - grub_ofconsole_width = (grub_uint8_t) grub_strtoul (val, 0, 10); - - grub_free (val); - } + char val[lval]; + + if (! grub_ieee1275_get_property (options, "screen-#columns", + val, lval, 0)) + grub_ofconsole_width = (grub_uint8_t) grub_strtoul (val, 0, 10); } - if (! grub_ieee1275_get_property_length (options, "screen-#rows", - &lval) && lval != -1) + if (! grub_ieee1275_get_property_length (options, "screen-#rows", &lval) + && lval >= 0 && lval < 1024) { - val = grub_malloc (lval); - if (val) - { - if (! grub_ieee1275_get_property (options, "screen-#rows", - val, lval, 0)) - grub_ofconsole_height = (grub_uint8_t) grub_strtoul (val, 0, 10); - - grub_free (val); - } + char val[lval]; + if (! grub_ieee1275_get_property (options, "screen-#rows", + val, lval, 0)) + grub_ofconsole_height = (grub_uint8_t) grub_strtoul (val, 0, 10); } }