public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Savva Mitrofanov" <savvamtr@gmail.com>
To: devel@edk2.groups.io
Cc: "Marvin Häuser" <mhaeuser@posteo.de>,
	"Pedro Falcato" <pedro.falcato@gmail.com>,
	"Vitaly Cheptsov" <vit9696@protonmail.com>
Subject: [edk2-platforms][PATCH v3 07/11] Ext4Pkg: Check that source file is directory in Ext4OpenInternal
Date: Fri, 27 Jan 2023 15:29:41 +0600	[thread overview]
Message-ID: <20230127092945.94389-8-savvamtr@gmail.com> (raw)
In-Reply-To: <20230127092945.94389-1-savvamtr@gmail.com>

This check already present in the while loop below, but absent for cases
when input file is nameless, so to handle assertion in Ext4ReadFile we
need to add it at the top of function

Cc: Marvin Häuser <mhaeuser@posteo.de>
Cc: Pedro Falcato <pedro.falcato@gmail.com>
Cc: Vitaly Cheptsov <vit9696@protonmail.com>
Fixes: d9ceedca6c8f ("Ext4Pkg: Add Ext4Dxe driver.")
Signed-off-by: Savva Mitrofanov <savvamtr@gmail.com>
---
 Features/Ext4Pkg/Ext4Dxe/File.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/Features/Ext4Pkg/Ext4Dxe/File.c b/Features/Ext4Pkg/Ext4Dxe/File.c
index 8dfe324255f4..9dde4a5d1a2d 100644
--- a/Features/Ext4Pkg/Ext4Dxe/File.c
+++ b/Features/Ext4Pkg/Ext4Dxe/File.c
@@ -207,6 +207,11 @@ Ext4OpenInternal (
   Level     = 0;
 
   DEBUG ((DEBUG_FS, "[ext4] Ext4OpenInternal %s\n", FileName));
+
+  if (!Ext4FileIsDir (Current)) {
+    return EFI_INVALID_PARAMETER;
+  }
+
   // If the path starts with a backslash, we treat the root directory as the base directory
   if (FileName[0] == L'\\') {
     FileName++;
@@ -219,6 +224,10 @@ Ext4OpenInternal (
       return EFI_ACCESS_DENIED;
     }
 
+    if (!Ext4FileIsDir (Current)) {
+      return EFI_INVALID_PARAMETER;
+    }
+
     // Discard leading path separators
     while (FileName[0] == L'\\') {
       FileName++;
@@ -242,10 +251,6 @@ Ext4OpenInternal (
 
     DEBUG ((DEBUG_FS, "[ext4] Opening %s\n", PathSegment));
 
-    if (!Ext4FileIsDir (Current)) {
-      return EFI_INVALID_PARAMETER;
-    }
-
     if (!Ext4IsLastPathSegment (FileName)) {
       if (!Ext4DirCanLookup (Current)) {
         return EFI_ACCESS_DENIED;
-- 
2.39.0


  parent reply	other threads:[~2023-01-27  9:29 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-27  9:29 [edk2-platforms][PATCH v3 00/11] Ext4Pkg: Code correctness and security improvements Savva Mitrofanov
2023-01-27  9:29 ` [edk2-platforms][PATCH v3 01/11] Ext4Pkg: Fix memory leak in Ext4RetrieveDirent Savva Mitrofanov
2023-01-27 14:12   ` Pedro Falcato
2023-01-27 14:16     ` Marvin Häuser
2023-01-27  9:29 ` [edk2-platforms][PATCH v3 02/11] Ext4Pkg: Fix incorrect checksum metadata feature check Savva Mitrofanov
2023-01-27 10:02   ` Marvin Häuser
2023-01-27 14:29     ` Pedro Falcato
2023-01-30  8:38       ` Marvin Häuser
2023-01-30  8:42     ` Savva Mitrofanov
2023-01-27  9:29 ` [edk2-platforms][PATCH v3 03/11] Ext4Pkg: Fix division by zero by adding check for s_inodes_per_group Savva Mitrofanov
2023-01-27 14:13   ` Pedro Falcato
2023-01-27 14:16     ` Marvin Häuser
2023-01-27  9:29 ` [edk2-platforms][PATCH v3 04/11] Ext4Pkg: Add inode number validity check Savva Mitrofanov
2023-01-27 14:19   ` Pedro Falcato
2023-02-02 10:15     ` Savva Mitrofanov
2023-01-27  9:29 ` [edk2-platforms][PATCH v3 05/11] Ext4Pkg: Fix shift out of bounds in Ext4OpenSuperblock Savva Mitrofanov
2023-01-27 14:22   ` Pedro Falcato
2023-01-27 14:24     ` Marvin Häuser
2023-01-27 16:14     ` Savva Mitrofanov
2023-01-27  9:29 ` [edk2-platforms][PATCH v3 06/11] Ext4Pkg: Corrects integer overflow check logic in DiskUtil Savva Mitrofanov
2023-01-27 14:24   ` Pedro Falcato
2023-01-27 16:10     ` Savva Mitrofanov
2023-01-27 16:21       ` Pedro Falcato
2023-01-27  9:29 ` Savva Mitrofanov [this message]
2023-01-27 14:26   ` [edk2-platforms][PATCH v3 07/11] Ext4Pkg: Check that source file is directory in Ext4OpenInternal Pedro Falcato
2023-01-27 14:33     ` Marvin Häuser
2023-01-27  9:29 ` [edk2-platforms][PATCH v3 08/11] Ext4Pkg: Check VolumeName allocation correctness in Ext4GetVolumeName Savva Mitrofanov
2023-01-27 14:27   ` [edk2-devel] " Pedro Falcato
2023-01-27 14:34     ` Marvin Häuser
2023-01-27  9:29 ` [edk2-platforms][PATCH v3 09/11] Ext4Pkg: Add missing exit Status in Ext4OpenDirent Savva Mitrofanov
2023-01-27 14:28   ` Pedro Falcato
2023-01-27 14:34     ` Marvin Häuser
2023-01-27  9:29 ` [edk2-platforms][PATCH v3 10/11] Ext4Pkg: Fixes build on MSVC Savva Mitrofanov
2023-01-27 14:33   ` Pedro Falcato
2023-01-27 14:36     ` Marvin Häuser
2023-01-30  8:35       ` Marvin Häuser
2023-01-27  9:29 ` [edk2-platforms][PATCH v3 11/11] Ext4Pkg: Filter out directory entry names containing \0 as invalid Savva Mitrofanov
2023-01-27 10:04   ` Marvin Häuser
2023-01-27 14:09     ` Pedro Falcato
2023-01-27 14:14       ` Marvin Häuser
2023-01-30  8:48         ` Marvin Häuser
2023-01-30  8:19     ` Savva Mitrofanov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230127092945.94389-8-savvamtr@gmail.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox