normal/cmdline: Add grub_calloc() failure check and fix hist_lines state loss
If grub_calloc() fails hist_lines becomes NULL. It means we loose the reference to the previously allocated hist_lines and leak memory. With this change on failure hist_lines still points to the old memory. So, no leak, no state corruption. Signed-off-by: Avnish Chouhan <avnish@linux.ibm.com> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
parent
8a850f47d0
commit
cb811bdf05
@ -42,7 +42,14 @@ grub_err_t
|
||||
grub_set_history (int newsize)
|
||||
{
|
||||
grub_uint32_t **old_hist_lines = hist_lines;
|
||||
|
||||
hist_lines = grub_calloc (newsize, sizeof (grub_uint32_t *));
|
||||
if (hist_lines == NULL)
|
||||
{
|
||||
/* We need to restore hist_lines to avoid memory leak and state loss. */
|
||||
hist_lines = old_hist_lines;
|
||||
return grub_errno;
|
||||
}
|
||||
|
||||
/* Copy the old lines into the new buffer. */
|
||||
if (old_hist_lines)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user