Blame SOURCES/0158-grub-core-normal-menu_entry.c-insert_string-fix-off-.patch

f96e0b
From 510ac1b166c642ccf6a57515922730c73f492f55 Mon Sep 17 00:00:00 2001
f96e0b
From: Andrey Borzenkov <arvidjaar@gmail.com>
f96e0b
Date: Mon, 25 Feb 2013 22:42:25 +0100
f96e0b
Subject: [PATCH 158/482] 	* grub-core/normal/menu_entry.c
f96e0b
 (insert_string): fix off by one 	access to unallocated memory.
f96e0b
f96e0b
---
f96e0b
 ChangeLog                     |  5 +++++
f96e0b
 grub-core/normal/menu_entry.c | 11 ++++++-----
f96e0b
 2 files changed, 11 insertions(+), 5 deletions(-)
f96e0b
f96e0b
diff --git a/ChangeLog b/ChangeLog
f96e0b
index 107c049..cc5d5e3 100644
f96e0b
--- a/ChangeLog
f96e0b
+++ b/ChangeLog
f96e0b
@@ -1,5 +1,10 @@
f96e0b
 2013-02-25  Andrey Borzenkov <arvidjaar@gmail.com>
f96e0b
 
f96e0b
+	* grub-core/normal/menu_entry.c (insert_string): fix off by one
f96e0b
+	access to unallocated memory.
f96e0b
+
f96e0b
+2013-02-25  Andrey Borzenkov <arvidjaar@gmail.com>
f96e0b
+
f96e0b
 	* Makefile.util.def: Add partmap/msdos.c to common library.
f96e0b
 	* include/grub/msdos_partition.h: Add GRUB_PC_PARTITION_TYPE_LDM
f96e0b
 	* grub-core/disk/ldm.c: Check for existence of
f96e0b
diff --git a/grub-core/normal/menu_entry.c b/grub-core/normal/menu_entry.c
f96e0b
index 7cd67f3..85f97da 100644
f96e0b
--- a/grub-core/normal/menu_entry.c
f96e0b
+++ b/grub-core/normal/menu_entry.c
f96e0b
@@ -393,11 +393,12 @@ insert_string (struct screen *screen, const char *s, int update)
f96e0b
 	  if (! screen->lines)
f96e0b
 	    return 0;
f96e0b
 
f96e0b
-	  /* Scroll down. */
f96e0b
-	  grub_memmove (screen->lines + screen->line + 2,
f96e0b
-			screen->lines + screen->line + 1,
f96e0b
-			((screen->num_lines - screen->line - 2)
f96e0b
-			 * sizeof (struct line)));
f96e0b
+	  /* Shift down if not appending after the last line. */
f96e0b
+	  if (screen->line < screen->num_lines - 2)
f96e0b
+	    grub_memmove (screen->lines + screen->line + 2,
f96e0b
+			  screen->lines + screen->line + 1,
f96e0b
+			  ((screen->num_lines - screen->line - 2)
f96e0b
+			   * sizeof (struct line)));
f96e0b
 
f96e0b
 	  if (! init_line (screen, screen->lines + screen->line + 1))
f96e0b
 	    return 0;
f96e0b
-- 
f96e0b
1.8.2.1
f96e0b