From 45bffae133365bc5033d841fbea6f325108fa733 Mon Sep 17 00:00:00 2001 From: Glenn Washburn Date: Wed, 12 Jan 2022 20:55:01 -0600 Subject: [PATCH] util/resolve: Bail with error if moddep.lst file line is too long The code reads each line into a buffer of size 1024 and does not check if the line is longer. So a line longer than 1024 will be read as a valid line followed by an invalid line. Then an error confusing to the user is sent with the test "invalid line format". But the line format is perfectly fine, the problem is in GRUB's parser. Check if we've hit a line longer than the size of the buffer, and if so send a more correct and reasonable error. Signed-off-by: Glenn Washburn Reviewed-by: Daniel Kiper --- util/resolve.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/util/resolve.c b/util/resolve.c index 5e9afa10c..b6e26312f 100644 --- a/util/resolve.c +++ b/util/resolve.c @@ -127,6 +127,9 @@ read_dep_list (FILE *fp) mod->next = dep->list; dep->list = mod; } + + if ((p - buf) == sizeof (buf)) + grub_util_error (_("line too long, length greater than %zu: module %s"), sizeof (buf), dep->name); } return dep_list; -- 2.47.2