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>
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)