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:
Avnish Chouhan 2025-11-20 13:41:41 +05:30 committed by Daniel Kiper
parent 8a850f47d0
commit cb811bdf05

View File

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