* commands/cat.c (grub_cmd_cat): Fix buffer overrun if '\r' is the

last character in the buffer.
Reported by: Vladimir Serbinenko.
This commit is contained in:
Colin Watson 2010-06-29 16:15:46 +01:00
parent dccaf99d10
commit 1ba9b88946
2 changed files with 7 additions and 1 deletions

View file

@ -1,3 +1,9 @@
2010-06-29 Colin Watson <cjwatson@ubuntu.com>
* commands/cat.c (grub_cmd_cat): Fix buffer overrun if '\r' is the
last character in the buffer.
Reported by: Vladimir Serbinenko.
2010-06-29 Robert Millan <rmh@gnu.org> 2010-06-29 Robert Millan <rmh@gnu.org>
* docs/grub.texi (Simple configuration): Document ${GRUB_BADRAM}. * docs/grub.texi (Simple configuration): Document ${GRUB_BADRAM}.

View file

@ -63,7 +63,7 @@ grub_cmd_cat (grub_extcmd_t cmd, int argc, char **args)
if ((grub_isprint (c) || grub_isspace (c)) && c != '\r') if ((grub_isprint (c) || grub_isspace (c)) && c != '\r')
grub_putchar (c); grub_putchar (c);
else if (dos && c == '\r' && buf[i + 1] == '\n') else if (dos && c == '\r' && i + 1 < size && buf[i + 1] == '\n')
{ {
grub_putchar ('\n'); grub_putchar ('\n');
i++; i++;