From: Glenn Washburn Date: Mon, 14 Aug 2023 06:03:41 +0000 (-0500) Subject: fs/archelp: If path given to grub_archelp_dir() is not a directory return error X-Git-Tag: grub-2.12~95 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fcbea18c584257adc824cbb1c66cec2f4329869c;p=thirdparty%2Fgrub.git fs/archelp: If path given to grub_archelp_dir() is not a directory return error Specifically, return GRUB_ERR_BAD_FILE_TYPE because this is what is expected by the ls command when it is given a path to a non-directory. This fixes a bug where calling ls with a list of non-directory paths outputs a blank line for each such argument. Signed-off-by: Glenn Washburn Reviewed-by: Daniel Kiper --- diff --git a/grub-core/fs/archelp.c b/grub-core/fs/archelp.c index 998de88b8..c1dcc6285 100644 --- a/grub-core/fs/archelp.c +++ b/grub-core/fs/archelp.c @@ -180,6 +180,14 @@ grub_archelp_dir (struct grub_archelp_data *data, if (p) *p = 0; + if ((*n == 0) && ((mode & GRUB_ARCHELP_ATTR_TYPE) + != GRUB_ARCHELP_ATTR_DIR)) + { + grub_error (GRUB_ERR_BAD_FILE_TYPE, N_("not a directory")); + grub_free (name); + goto fail; + } + if (((!prev) || (grub_strcmp (prev, name) != 0)) && *n != 0) { struct grub_dirhook_info info;