From cb811bdf053d5e976e50673bd4685a64f63f844c Mon Sep 17 00:00:00 2001 From: Avnish Chouhan Date: Thu, 20 Nov 2025 13:41:41 +0530 Subject: [PATCH] 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 Reviewed-by: Daniel Kiper --- grub-core/normal/cmdline.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/grub-core/normal/cmdline.c b/grub-core/normal/cmdline.c index 9c6d9ade9..0875250be 100644 --- a/grub-core/normal/cmdline.c +++ b/grub-core/normal/cmdline.c @@ -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)