]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
util/resolve: Do not read past the end of the array in read_dep_list()
authorGlenn Washburn <development@efficientek.com>
Thu, 13 Jan 2022 02:55:00 +0000 (20:55 -0600)
committerDaniel Kiper <daniel.kiper@oracle.com>
Tue, 8 Feb 2022 12:39:01 +0000 (13:39 +0100)
If the last non-NULL byte of "buf" is not a white-space character (such as
when a read line is longer than the size of "buf"), then "p" will eventually
point to the byte after the last byte in "buf". After which "p" will be
dereferenced in the while conditional leading to an out of bounds read. Make
sure that "p" is inside "buf" before dereferencing it.

Signed-off-by: Glenn Washburn <development@efficientek.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
util/resolve.c

index 3e887d2ff7b07c727628f739028650f1fb3faf89..5e9afa10c87835a995732e35d772248772f8834c 100644 (file)
@@ -102,7 +102,7 @@ read_dep_list (FILE *fp)
       dep_list = dep;
 
       /* Add dependencies.  */
-      while (*p)
+      while (p < (buf + sizeof (buf)) && *p)
        {
          struct mod_list *mod;
          char *name;