From nobody Sat Apr 27 14:21:53 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+99447+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+99447+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1675333300; cv=none; d=zohomail.com; s=zohoarc; b=cpe77sw8IzF3xJetuBO9u8GiqB7VgGZLpOxFujTTBgNPFdqyzMPIL3h9K7bFH5GNXs987EkXH7NyvWdD7MZq3K20wj42p6+CR0V4UZQUthrgeFN7AbwLyi5orN99vDVn7WK/kHdHcGrpNoieaHDG5txmj9qu/kYwO9Bcl7+sa84= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1675333300; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=Y9L45H5v7N+WBcWYysxHjb5J6mTOE6lWTogcIFFHrgY=; b=hgjibJ9xIQGuvL0eHY7lQC3W/xQBrxjDRK+P4ZmU8T/E/7PW+/jcf2j3+fwPDhwJ5F+jcm/teGh6eJDWXHVlISmKZWx5o11tElMjGqv0+z0evuK/HA4dcgUWRVmr0VT/wXatY9u/VVMrsHYtdFBTbnlpwB8a/kBICf0umEi5FBQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+99447+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 167533330094661.27782171058084; Thu, 2 Feb 2023 02:21:40 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id FbCmYY1788612xAIFPF8ReUz; Thu, 02 Feb 2023 02:21:40 -0800 X-Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.49]) by mx.groups.io with SMTP id smtpd.web11.11509.1675333299778625849 for ; Thu, 02 Feb 2023 02:21:40 -0800 X-Received: by mail-ej1-f49.google.com with SMTP id ml19so4716064ejb.0 for ; Thu, 02 Feb 2023 02:21:39 -0800 (PST) X-Gm-Message-State: IMhv9l2EDUp5vacw2Q81AQYSx1787277AA= X-Google-Smtp-Source: AK7set+wLOlBaPT6q9JjT2AWGNlX0XMnOZOS3p4zXKK8NHmmr+zKo0kvL8g9Q6mnxRxBGcp7jbDs5Q== X-Received: by 2002:a17:906:b5a:b0:878:72f7:bd99 with SMTP id v26-20020a1709060b5a00b0087872f7bd99mr5850588ejg.6.1675333297979; Thu, 02 Feb 2023 02:21:37 -0800 (PST) X-Received: from localhost.localdomain ([176.62.67.29]) by smtp.gmail.com with ESMTPSA id ci22-20020a170906c35600b0087bcda2b07bsm10013121ejb.202.2023.02.02.02.21.37 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 02 Feb 2023 02:21:37 -0800 (PST) From: "Savva Mitrofanov" To: devel@edk2.groups.io Cc: =?UTF-8?q?Marvin=20H=C3=A4user?= , Pedro Falcato , Vitaly Cheptsov Subject: [edk2-devel] [edk2-platforms][PATCH v4 01/12] Ext4Pkg: Fix memory leak in Ext4RetrieveDirent Date: Thu, 2 Feb 2023 16:21:22 +0600 Message-Id: <20230202102133.51606-2-savvamtr@gmail.com> In-Reply-To: <20230202102133.51606-1-savvamtr@gmail.com> References: <20230202102133.51606-1-savvamtr@gmail.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,savvamtr@gmail.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1675333300; bh=5v6NdoMZ43gGchvK7u+59X/3os1owZpfO8FOH0tiqbg=; h=Cc:Content-Type:Date:From:Reply-To:Subject:To; b=CRX1Z09nnWWUWjuWw+a5pjvuhIUc3zwm1Z2xB2IQoaT9F8MOGZj5bLkL+DTwNK456R4 v5xvgA/hzfIYErTdET6aJD/Wm4ywMMe1Lbj6F7b1XLMM1DS87JZUKDhTx5rwQn8SuyfLX rt6Qq8P9viVsdPVNvZqS7dgURuEuI79uCk0= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1675333301230100004 Content-Type: text/plain; charset="utf-8" We need to free buffer on return if BlockRemainder !=3D 0. Also changed return logic from function to use use common exit to prevent code duplication. Cc: Marvin H=C3=A4user Cc: Pedro Falcato Cc: Vitaly Cheptsov Fixes: d9ceedca6c8f ("Ext4Pkg: Add Ext4Dxe driver.") Signed-off-by: Savva Mitrofanov Reviewed-by: Pedro Falcato Reviewed-by: Marvin H=C3=A4user --- Features/Ext4Pkg/Ext4Dxe/Directory.c | 30 +++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/Features/Ext4Pkg/Ext4Dxe/Directory.c b/Features/Ext4Pkg/Ext4Dx= e/Directory.c index 73d21d9f9542..c7992cc72717 100644 --- a/Features/Ext4Pkg/Ext4Dxe/Directory.c +++ b/Features/Ext4Pkg/Ext4Dxe/Directory.c @@ -113,8 +113,7 @@ Ext4RetrieveDirent ( UINTN ToCopy; UINTN BlockOffset; =20 - Status =3D EFI_NOT_FOUND; - Buf =3D AllocatePool (Partition->BlockSize); + Buf =3D AllocatePool (Partition->BlockSize); =20 if (Buf =3D=3D NULL) { return EFI_OUT_OF_RESOURCES; @@ -128,7 +127,8 @@ Ext4RetrieveDirent ( DivU64x32Remainder (DirInoSize, Partition->BlockSize, &BlockRemainder); if (BlockRemainder !=3D 0) { // Directory inodes need to have block aligned sizes - return EFI_VOLUME_CORRUPTED; + Status =3D EFI_VOLUME_CORRUPTED; + goto Out; } =20 while (Off < DirInoSize) { @@ -137,8 +137,7 @@ Ext4RetrieveDirent ( Status =3D Ext4Read (Partition, Directory, Buf, Off, &Length); =20 if (Status !=3D EFI_SUCCESS) { - FreePool (Buf); - return Status; + goto Out; } =20 for (BlockOffset =3D 0; BlockOffset < Partition->BlockSize; ) { @@ -146,19 +145,19 @@ Ext4RetrieveDirent ( RemainingBlock =3D Partition->BlockSize - BlockOffset; // Check if the minimum directory entry fits inside [BlockOffset, En= dOfBlock] if (RemainingBlock < EXT4_MIN_DIR_ENTRY_LEN) { - FreePool (Buf); - return EFI_VOLUME_CORRUPTED; + Status =3D EFI_VOLUME_CORRUPTED; + goto Out; } =20 if (!Ext4ValidDirent (Entry)) { - FreePool (Buf); - return EFI_VOLUME_CORRUPTED; + Status =3D EFI_VOLUME_CORRUPTED; + goto Out; } =20 if ((Entry->name_len > RemainingBlock) || (Entry->rec_len > Remainin= gBlock)) { // Corrupted filesystem - FreePool (Buf); - return EFI_VOLUME_CORRUPTED; + Status =3D EFI_VOLUME_CORRUPTED; + goto Out; } =20 // Unused entry @@ -193,8 +192,8 @@ Ext4RetrieveDirent ( ToCopy =3D MIN (Entry->rec_len, sizeof (EXT4_DIR_ENTRY)); =20 CopyMem (Result, Entry, ToCopy); - FreePool (Buf); - return EFI_SUCCESS; + Status =3D EFI_SUCCESS; + goto Out; } =20 BlockOffset +=3D Entry->rec_len; @@ -203,8 +202,11 @@ Ext4RetrieveDirent ( Off +=3D Partition->BlockSize; } =20 + Status =3D EFI_NOT_FOUND; + +Out: FreePool (Buf); - return EFI_NOT_FOUND; + return Status; } =20 /** --=20 2.39.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#99447): https://edk2.groups.io/g/devel/message/99447 Mute This Topic: https://groups.io/mt/96697366/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Sat Apr 27 14:21:53 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+99448+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+99448+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1675333301; cv=none; d=zohomail.com; s=zohoarc; b=YofN3caQbUqFhLgwojnMW2rE5Pl6wTnrZ3VZiAVq2fHKx0mRY24qUsgX9aqcWLKU/k+pqNSGZa9zkC3EkILB3BPYercG4qQagB2CUHoIoIk4WvDy2Ta5dwlhS9g30aXIWbsVoMhc/JS1cAR9leqW93zQpqHu8bLkOe/PW/NJxP0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1675333301; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=JJOjgJurbrWYhozRSJ6dVGx0aIN2b08iKPWFtbbipoM=; b=JwXtEWIYF1KNugXJcxrCUytGa/PhmEN6iD2L2DMrc4RwUS25mk/fgNy0K03IgXvh+A5s2Dxc7m2RBV8VvVHnFI3PpZQI8OkWI7CvfYT9Qkqoxg5W4Rt7v4c8ecSqk9TwtS7G4p9BTyZYxajX80dDhw7yTS1yDaAUgrwIyTI4CBE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+99448+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1675333301845271.88241299435015; Thu, 2 Feb 2023 02:21:41 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id DWXSYY1788612x8JVdXAnjCw; Thu, 02 Feb 2023 02:21:41 -0800 X-Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.49]) by mx.groups.io with SMTP id smtpd.web10.11487.1675333300851208931 for ; Thu, 02 Feb 2023 02:21:41 -0800 X-Received: by mail-ej1-f49.google.com with SMTP id m2so4524644ejb.8 for ; Thu, 02 Feb 2023 02:21:40 -0800 (PST) X-Gm-Message-State: co8xcDjSb8UufCrploRU7PRex1787277AA= X-Google-Smtp-Source: AK7set+SnRzfAuGRRl35pW898svXH0qkzGkSkOgq5Dc/b+3c5G1nDWfyEKQE3u+Shgk22quK2ZeCVw== X-Received: by 2002:a17:906:a246:b0:881:9531:35a1 with SMTP id bi6-20020a170906a24600b00881953135a1mr5922310ejb.41.1675333299021; Thu, 02 Feb 2023 02:21:39 -0800 (PST) X-Received: from localhost.localdomain ([176.62.67.29]) by smtp.gmail.com with ESMTPSA id ci22-20020a170906c35600b0087bcda2b07bsm10013121ejb.202.2023.02.02.02.21.38 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 02 Feb 2023 02:21:38 -0800 (PST) From: "Savva Mitrofanov" To: devel@edk2.groups.io Cc: =?UTF-8?q?Marvin=20H=C3=A4user?= , Pedro Falcato , Vitaly Cheptsov Subject: [edk2-devel] [edk2-platforms][PATCH v4 02/12] Ext4Pkg: Fix incorrect checksum metadata feature check Date: Thu, 2 Feb 2023 16:21:23 +0600 Message-Id: <20230202102133.51606-3-savvamtr@gmail.com> In-Reply-To: <20230202102133.51606-1-savvamtr@gmail.com> References: <20230202102133.51606-1-savvamtr@gmail.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,savvamtr@gmail.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1675333301; bh=Fd7YRRkndmAY264nbUGJVHoY6oNOExYwkOlI3XvBI+Y=; h=Cc:Content-Type:Date:From:Reply-To:Subject:To; b=OYIvH4VjsI8xw6qL1sSTjoXkvpdFU/L73WDoRhCwDVwINWm6WU4VVeno6Y4ceywIW+I k3YP0PnnyHdhCx7F3Xw3kQl//QY6Ws039L5uV6qRBAgs02PRwrTO5QtuwCA/db29Tatlk CFlMOV9/ozHRNHhbUi+oc/rlr8r4U1YSE6k= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1675333303213100011 We need to check EXT4_FEATURE_RO_COMPAT_METADATA_CSUM in the FeatureRoCompat field instead of FeaturesCompat. The proper way to do this is to use macro EXT4_HAS_METADATA_CSUM. Also, replace the EXT4_FEATURE_INCOMPAT_CSUM_SEED check with predefined macro EXT4_HAS_INCOMPAT Cc: Marvin H=C3=A4user Cc: Pedro Falcato Cc: Vitaly Cheptsov Fixes: d9ceedca6c8f ("Ext4Pkg: Add Ext4Dxe driver.") Signed-off-by: Savva Mitrofanov Reviewed-by: Pedro Falcato Reviewed-by: Marvin H=C3=A4user --- Features/Ext4Pkg/Ext4Dxe/Superblock.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Features/Ext4Pkg/Ext4Dxe/Superblock.c b/Features/Ext4Pkg/Ext4D= xe/Superblock.c index 5a3c7f478187..35dcf3c007c8 100644 --- a/Features/Ext4Pkg/Ext4Dxe/Superblock.c +++ b/Features/Ext4Pkg/Ext4Dxe/Superblock.c @@ -220,13 +220,11 @@ Ext4OpenSuperblock ( } =20 // At the time of writing, it's the only supported checksum. - if (Partition->FeaturesCompat & EXT4_FEATURE_RO_COMPAT_METADATA_CSUM && - (Sb->s_checksum_type !=3D EXT4_CHECKSUM_CRC32C)) - { + if (EXT4_HAS_METADATA_CSUM (Partition) && (Sb->s_checksum_type !=3D EXT4= _CHECKSUM_CRC32C)) { return EFI_UNSUPPORTED; } =20 - if ((Partition->FeaturesIncompat & EXT4_FEATURE_INCOMPAT_CSUM_SEED) !=3D= 0) { + if (EXT4_HAS_INCOMPAT (Partition, EXT4_FEATURE_INCOMPAT_CSUM_SEED)) { Partition->InitialSeed =3D Sb->s_checksum_seed; } else { Partition->InitialSeed =3D Ext4CalculateChecksum (Partition, Sb->s_uui= d, 16, ~0U); --=20 2.39.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#99448): https://edk2.groups.io/g/devel/message/99448 Mute This Topic: https://groups.io/mt/96697367/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Sat Apr 27 14:21:53 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+99449+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+99449+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1675333303; cv=none; d=zohomail.com; s=zohoarc; b=VVYozt97fDBGBmF/QHjvGDIDRWXyM447fgVN8S68JhKpBwbqHqCTyrcbmwFH2nBKB/j6kaXCbPGJmJVgwyme6ZCtHPsLmaObsvxZ6RGkgVJLZwbEfk/L055zD6xLjCzp8Yqbl0QLlxEQyJrUCpzOgKCE8u2Kra0SeJJKSaisJlM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1675333303; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=Pai2Ht5pWBuTTmpobkOcXDCy9qUkIn6CtiResz9CHZE=; b=gvyWLYZjwmwEc4dK11XbV3PW2iEFGetxBg/f4gGKarhNltM0r+uSdLD6LBHyxlsJbNIB5KhjzuVkIvoVmCmEu2ICvveJsl8SAH14tF7/V3KOaZPZYqCGEyalQnssu5n1IfvOurIRSIb/MfIVemRF8+C9QAlk74Xl1zxD68vLlqE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+99449+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 167533330307071.51597650397991; Thu, 2 Feb 2023 02:21:43 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id lvWLYY1788612xnnWv5vYBZv; Thu, 02 Feb 2023 02:21:42 -0800 X-Received: from mail-ed1-f41.google.com (mail-ed1-f41.google.com [209.85.208.41]) by mx.groups.io with SMTP id smtpd.web10.11488.1675333301816810625 for ; Thu, 02 Feb 2023 02:21:42 -0800 X-Received: by mail-ed1-f41.google.com with SMTP id eq11so1466605edb.6 for ; Thu, 02 Feb 2023 02:21:41 -0800 (PST) X-Gm-Message-State: plhQlJry8qiPwt3h4f7qMY2kx1787277AA= X-Google-Smtp-Source: AK7set+TImjv2BidbYL25VRFK7NI0t3SjyyEJ0GvqxBoz3liDkGX7baamApUn83WNYJ/E3dLxfdhPw== X-Received: by 2002:aa7:d481:0:b0:4a2:1618:d702 with SMTP id b1-20020aa7d481000000b004a21618d702mr5607537edr.18.1675333300129; Thu, 02 Feb 2023 02:21:40 -0800 (PST) X-Received: from localhost.localdomain ([176.62.67.29]) by smtp.gmail.com with ESMTPSA id ci22-20020a170906c35600b0087bcda2b07bsm10013121ejb.202.2023.02.02.02.21.39 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 02 Feb 2023 02:21:39 -0800 (PST) From: "Savva Mitrofanov" To: devel@edk2.groups.io Cc: =?UTF-8?q?Marvin=20H=C3=A4user?= , Pedro Falcato , Vitaly Cheptsov Subject: [edk2-devel] [edk2-platforms][PATCH v4 03/12] Ext4Pkg: Fix division by zero by adding check for s_inodes_per_group Date: Thu, 2 Feb 2023 16:21:24 +0600 Message-Id: <20230202102133.51606-4-savvamtr@gmail.com> In-Reply-To: <20230202102133.51606-1-savvamtr@gmail.com> References: <20230202102133.51606-1-savvamtr@gmail.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,savvamtr@gmail.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1675333302; bh=rPEQR0XPh1sEI82eVy7EbT6bF1627ojQ7Zv94/C3YGY=; h=Cc:Content-Type:Date:From:Reply-To:Subject:To; b=InT28aWTZ9PnskrfYoGkFnEv6mKtS6bEbdxfDOaj7GLRVc+SgbTvgX9RZIC9r/vRtEE DK64UwGm4oiBw/wUJN8y0S9F5PFgH+kDflivBtQGv4toXs7AvCNwGFFg1KyIC0Z3FsCrj OpXlXTnUELwULU5Oc/Tz1UXjel7h02ETeRk= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1675333305250100015 Content-Type: text/plain; charset="utf-8" Superblock s_inodes_per_group field can't be zero, it leads to division by zero in BlockGroup routine Ext4ReadInode Cc: Marvin H=C3=A4user Cc: Pedro Falcato Cc: Vitaly Cheptsov Fixes: d9ceedca6c8f ("Ext4Pkg: Add Ext4Dxe driver.") Signed-off-by: Savva Mitrofanov Reviewed-by: Pedro Falcato Reviewed-by: Marvin H=C3=A4user --- Features/Ext4Pkg/Ext4Dxe/Superblock.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Features/Ext4Pkg/Ext4Dxe/Superblock.c b/Features/Ext4Pkg/Ext4D= xe/Superblock.c index 35dcf3c007c8..be3527e4d618 100644 --- a/Features/Ext4Pkg/Ext4Dxe/Superblock.c +++ b/Features/Ext4Pkg/Ext4Dxe/Superblock.c @@ -243,6 +243,11 @@ Ext4OpenSuperblock ( =20 DEBUG ((DEBUG_FS, "Read only =3D %u\n", Partition->ReadOnly)); =20 + if (Sb->s_inodes_per_group =3D=3D 0) { + DEBUG ((DEBUG_ERROR, "[ext4] Inodes per group can not be zero\n")); + return EFI_VOLUME_CORRUPTED; + } + Partition->BlockSize =3D (UINT32)LShiftU64 (1024, Sb->s_log_block_size); =20 // The size of a block group can also be calculated as 8 * Partition->Bl= ockSize --=20 2.39.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#99449): https://edk2.groups.io/g/devel/message/99449 Mute This Topic: https://groups.io/mt/96697368/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Sat Apr 27 14:21:53 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+99450+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+99450+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1675333303; cv=none; d=zohomail.com; s=zohoarc; b=eGj4CEFQQTWbPdk/yc14CeoEd0xqD+Wowx1M7Hz/CmA7JC5GaY/mjQxcQ+Tehtu/KqYWLmbHAzV0Rnp8NKEYfZEIuQIEhhwCK5N26geZy91YEYkSbK4RPYxJ8Zw39Y4iTFlpr8rRYLnc6ldKpq9MxQYZi1sx+Uh6+ZBlvLBgi/0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1675333303; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=NmN4vyYUMrx2ftWm4ioZiT6TR8hpNnRDqdYki8VZ2Bw=; b=Uq7Vu5Qd/9b2wrHxIU44AdIksL6huASjZRAcoqHshFv9pbAQr206lrmqEdN/w2tXKjE1peeuXq9x277LauT7cNsvK9K2qyDo5UZAO/o55FxO3XKVxF7Uaw1YvjCvK4dPB3koFxqcCe63IwnLdazLWJLQyz/V4v7d6BgGbvKq+7g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+99450+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1675333303927707.0384973309192; Thu, 2 Feb 2023 02:21:43 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id KpdyYY1788612xuQSmKWZZSx; Thu, 02 Feb 2023 02:21:43 -0800 X-Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com [209.85.218.54]) by mx.groups.io with SMTP id smtpd.web10.11489.1675333302793373515 for ; Thu, 02 Feb 2023 02:21:43 -0800 X-Received: by mail-ej1-f54.google.com with SMTP id lu11so4593922ejb.3 for ; Thu, 02 Feb 2023 02:21:42 -0800 (PST) X-Gm-Message-State: 7NBBd8vyGaWhRt4EU58aThTyx1787277AA= X-Google-Smtp-Source: AK7set9Fjhy+2D2mNmqv7fqJCNLYEPfB7WoY06djLMbtdFEu42KFcFBxaWj6sKtj6gymj5/C7ZQUgA== X-Received: by 2002:a17:906:16c2:b0:888:33a:e359 with SMTP id t2-20020a17090616c200b00888033ae359mr5617887ejd.38.1675333301212; Thu, 02 Feb 2023 02:21:41 -0800 (PST) X-Received: from localhost.localdomain ([176.62.67.29]) by smtp.gmail.com with ESMTPSA id ci22-20020a170906c35600b0087bcda2b07bsm10013121ejb.202.2023.02.02.02.21.40 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 02 Feb 2023 02:21:40 -0800 (PST) From: "Savva Mitrofanov" To: devel@edk2.groups.io Cc: =?UTF-8?q?Marvin=20H=C3=A4user?= , Pedro Falcato , Vitaly Cheptsov Subject: [edk2-devel] [edk2-platforms][PATCH v4 04/12] Ext4Pkg: Add inode number validity check Date: Thu, 2 Feb 2023 16:21:25 +0600 Message-Id: <20230202102133.51606-5-savvamtr@gmail.com> In-Reply-To: <20230202102133.51606-1-savvamtr@gmail.com> References: <20230202102133.51606-1-savvamtr@gmail.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,savvamtr@gmail.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1675333303; bh=MiXssclp+LFr7JAx/B0HiscQ4XnFknBbJ8sRdolaeuQ=; h=Cc:Content-Type:Date:From:Reply-To:Subject:To; b=rJ+XLcHhrCvYVfdRts/t/Hpf8hbINAMizX8HAGbEHrWByAmsXrZWHeh68+Y2HlJDPsh mzYpHulcze1SP71eN44KUyHBbF6iBaciBdBFqUwDX6yTJHd4zRdg6IGeu9KcnYxOuqOtI RwTsqxyieswMh2sUMjst9irbSaMUkwF8W/c= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1675333305259100018 Content-Type: text/plain; charset="utf-8" We need to validate inode number to prevent reading non-existent and incorrect inodes so we checks that inode number valid across opened partition before we read it in Ext4ReadInode. Cc: Marvin H=C3=A4user Cc: Pedro Falcato Cc: Vitaly Cheptsov Fixes: d9ceedca6c8f ("Ext4Pkg: Add Ext4Dxe driver.") Signed-off-by: Savva Mitrofanov Acked-by: Marvin H=C3=A4user Reviewed-by: Pedro Falcato --- Features/Ext4Pkg/Ext4Dxe/Ext4Disk.h | 13 +++++++++++-- Features/Ext4Pkg/Ext4Dxe/Ext4Dxe.h | 12 ++++++++++++ Features/Ext4Pkg/Ext4Dxe/BlockGroup.c | 5 +++++ 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/Features/Ext4Pkg/Ext4Dxe/Ext4Disk.h b/Features/Ext4Pkg/Ext4Dxe= /Ext4Disk.h index d0a455d0e572..70cb6c3209dd 100644 --- a/Features/Ext4Pkg/Ext4Dxe/Ext4Disk.h +++ b/Features/Ext4Pkg/Ext4Dxe/Ext4Disk.h @@ -484,8 +484,17 @@ typedef UINT64 EXT4_BLOCK_NR; typedef UINT32 EXT2_BLOCK_NR; typedef UINT32 EXT4_INO_NR; =20 -// 2 is always the root inode number in ext4 -#define EXT4_ROOT_INODE_NR 2 +/* Special inode numbers */ +#define EXT4_ROOT_INODE_NR 2 +#define EXT4_USR_QUOTA_INODE_NR 3 +#define EXT4_GRP_QUOTA_INODE_NR 4 +#define EXT4_BOOT_LOADER_INODE_NR 5 +#define EXT4_UNDEL_DIR_INODE_NR 6 +#define EXT4_RESIZE_INODE_NR 7 +#define EXT4_JOURNAL_INODE_NR 8 + +/* First non-reserved inode for old ext4 filesystems */ +#define EXT4_GOOD_OLD_FIRST_INODE_NR 11 =20 #define EXT4_BLOCK_FILE_HOLE 0 =20 diff --git a/Features/Ext4Pkg/Ext4Dxe/Ext4Dxe.h b/Features/Ext4Pkg/Ext4Dxe/= Ext4Dxe.h index f608def7c9eb..c977a97ca5c2 100644 --- a/Features/Ext4Pkg/Ext4Dxe/Ext4Dxe.h +++ b/Features/Ext4Pkg/Ext4Dxe/Ext4Dxe.h @@ -287,6 +287,18 @@ Ext4GetBlockGroupDesc ( IN UINT32 BlockGroup ); =20 +/** + Checks inode number validity across superblock of the opened partition. + Currently we don't have logic to process defective blocks with + inode number equal 1, so we don't reject them at this point + + @param[in] Partition Pointer to the opened ext4 partition. + + @return TRUE if inode number is valid. +**/ +#define EXT4_IS_VALID_INODE_NR(Partition, InodeNum) = \ + (((InodeNum) > 0) && (InodeNum) <=3D (Partition->SuperBlock.s_inodes_cou= nt)) + /** Reads an inode from disk. =20 diff --git a/Features/Ext4Pkg/Ext4Dxe/BlockGroup.c b/Features/Ext4Pkg/Ext4D= xe/BlockGroup.c index cba96cd95afc..f34cdc5dbad7 100644 --- a/Features/Ext4Pkg/Ext4Dxe/BlockGroup.c +++ b/Features/Ext4Pkg/Ext4Dxe/BlockGroup.c @@ -50,6 +50,11 @@ Ext4ReadInode ( EXT4_BLOCK_NR InodeTableStart; EFI_STATUS Status; =20 + if (!EXT4_IS_VALID_INODE_NR (Partition, InodeNum)) { + DEBUG ((DEBUG_ERROR, "[ext4] Error reading inode: inode number %lu isn= 't valid\n", InodeNum)); + return EFI_VOLUME_CORRUPTED; + } + BlockGroupNumber =3D (UINT32)DivU64x64Remainder ( InodeNum - 1, Partition->SuperBlock.s_inodes_per_group, --=20 2.39.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#99450): https://edk2.groups.io/g/devel/message/99450 Mute This Topic: https://groups.io/mt/96697369/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Sat Apr 27 14:21:53 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+99451+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+99451+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1675333304; cv=none; d=zohomail.com; s=zohoarc; b=WGz4f40iQktV/Vcy0gFqByGAPyTx2wG1CkJXdXTualIzKeYWHGPIw67Lj7UPm1NdfGKcbgZVyCy0Y8YpgSWjkCW30gz6hNjCoEGn2kYaquvSR6j9M8V2nRr1XLmzFE6Mg95hwVuOjTPuc/0KcnWtAJ2TVQkQd7JjjFon5QjQgzo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1675333304; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=0ZIMk4RMhAbstdbtlaIF8DbjZHk7wQ2etaVLfX6Lido=; b=bkgWvZucwY8xOvAMOAzZP42/Xoo3KO145dGr5o6wThmhjLgJpuWorUPmwNJ92mee4BTZKKYj0G3z2JqEHr0+d7HgaY7fxPnUzAS1+ktXQ862GiXG/Q2HhlG0nVLVINVr9aVEtwZWr5DA9HHla9yYefG+FT0sJSUh4Hf5H+EUrB0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+99451+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1675333304844282.05017632105853; Thu, 2 Feb 2023 02:21:44 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id RaTMYY1788612x2cS2AK8CYu; Thu, 02 Feb 2023 02:21:44 -0800 X-Received: from mail-ej1-f51.google.com (mail-ej1-f51.google.com [209.85.218.51]) by mx.groups.io with SMTP id smtpd.web11.11510.1675333303821052017 for ; Thu, 02 Feb 2023 02:21:44 -0800 X-Received: by mail-ej1-f51.google.com with SMTP id lu11so4594031ejb.3 for ; Thu, 02 Feb 2023 02:21:43 -0800 (PST) X-Gm-Message-State: pqXIX8uaCcjcO5t2GlpjuXIbx1787277AA= X-Google-Smtp-Source: AK7set+VsmaYLx3gnMXHOozmbc90+OU0ha20K8XoNsoVIVH2HZYJQS58dBV0qj0AO9n+9kbM8zMbdw== X-Received: by 2002:a17:906:b4b:b0:878:71fe:2f12 with SMTP id v11-20020a1709060b4b00b0087871fe2f12mr6334582ejg.50.1675333302240; Thu, 02 Feb 2023 02:21:42 -0800 (PST) X-Received: from localhost.localdomain ([176.62.67.29]) by smtp.gmail.com with ESMTPSA id ci22-20020a170906c35600b0087bcda2b07bsm10013121ejb.202.2023.02.02.02.21.41 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 02 Feb 2023 02:21:42 -0800 (PST) From: "Savva Mitrofanov" To: devel@edk2.groups.io Cc: =?UTF-8?q?Marvin=20H=C3=A4user?= , Pedro Falcato , Vitaly Cheptsov Subject: [edk2-devel] [edk2-platforms][PATCH v4 05/12] Ext4Pkg: Fix shift out of bounds in Ext4OpenSuperblock Date: Thu, 2 Feb 2023 16:21:26 +0600 Message-Id: <20230202102133.51606-6-savvamtr@gmail.com> In-Reply-To: <20230202102133.51606-1-savvamtr@gmail.com> References: <20230202102133.51606-1-savvamtr@gmail.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,savvamtr@gmail.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1675333304; bh=bE1frtnWBQu3zkAshU4tAgU8P7iYXIzWuuu8epgXZPo=; h=Cc:Content-Type:Date:From:Reply-To:Subject:To; b=Db74C1N9glj+c3Lp0lIcAVzlFf3ViustFQldBMMtOiTK+ofdHR1gVPD+34wpgouwmPj kKwB+lm6L6IbuLAFwrtz/tf6OYK1SJ5rClnT2MP+LMp370AiR5hYqegbCVmrgxlCcJTLE /6mOOvvWN2RvWuudIlzpMth4JSgV4c8sIfg= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1675333305257100017 Content-Type: text/plain; charset="utf-8" Missing check for wrong s_log_block_size exponent leads to shift out of bounds. Limit block size to 2 MiB Cc: Marvin H=C3=A4user Cc: Pedro Falcato Cc: Vitaly Cheptsov Fixes: d9ceedca6c8f ("Ext4Pkg: Add Ext4Dxe driver.") Signed-off-by: Savva Mitrofanov Reviewed-by: Pedro Falcato Reviewed-by: Marvin H=C3=A4user --- Features/Ext4Pkg/Ext4Dxe/Ext4Dxe.h | 14 ++++++++++++++ Features/Ext4Pkg/Ext4Dxe/Superblock.c | 5 +++++ 2 files changed, 19 insertions(+) diff --git a/Features/Ext4Pkg/Ext4Dxe/Ext4Dxe.h b/Features/Ext4Pkg/Ext4Dxe/= Ext4Dxe.h index c977a97ca5c2..d3f72a98d7f8 100644 --- a/Features/Ext4Pkg/Ext4Dxe/Ext4Dxe.h +++ b/Features/Ext4Pkg/Ext4Dxe/Ext4Dxe.h @@ -40,6 +40,20 @@ #define EXT4_EFI_PATH_MAX 4096 #define EXT4_DRIVER_VERSION 0x0000 =20 +// +// The EXT4 Specification doesn't strictly limit block size and this value= could be up to 2^31, +// but in practice it is limited by PAGE_SIZE due to performance significa= nt impact. +// Many EXT4 implementations have size of block limited to PAGE_SIZE. In m= any cases it's limited +// to 4096, which is a commonly supported page size on most MMU-capable ha= rdware, and up to 65536. +// So, to take a balance between compatibility and security measures, it i= s decided to use the +// value of 2MiB as the limit, which is equal to large page size on new ha= rdware. +// As for supporting big block sizes, EXT4 has a RO_COMPAT_FEATURE called = BIGALLOC, which changes +// EXT4 to use clustered allocation, so that each bit in the ext4 block al= location bitmap addresses +// a power of two number of blocks. So it would be wiser to implement and = use this feature +// if there is such a need instead of big block size. +// +#define EXT4_LOG_BLOCK_SIZE_MAX 11 + /** Opens an ext4 partition and installs the Simple File System protocol. =20 diff --git a/Features/Ext4Pkg/Ext4Dxe/Superblock.c b/Features/Ext4Pkg/Ext4D= xe/Superblock.c index be3527e4d618..3f56de93c105 100644 --- a/Features/Ext4Pkg/Ext4Dxe/Superblock.c +++ b/Features/Ext4Pkg/Ext4Dxe/Superblock.c @@ -248,6 +248,11 @@ Ext4OpenSuperblock ( return EFI_VOLUME_CORRUPTED; } =20 + if (Sb->s_log_block_size > EXT4_LOG_BLOCK_SIZE_MAX) { + DEBUG ((DEBUG_ERROR, "[ext4] SuperBlock s_log_block_size %lu is too bi= g\n", Sb->s_log_block_size)); + return EFI_UNSUPPORTED; + } + Partition->BlockSize =3D (UINT32)LShiftU64 (1024, Sb->s_log_block_size); =20 // The size of a block group can also be calculated as 8 * Partition->Bl= ockSize --=20 2.39.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#99451): https://edk2.groups.io/g/devel/message/99451 Mute This Topic: https://groups.io/mt/96697370/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Sat Apr 27 14:21:53 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+99452+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+99452+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1675333306; cv=none; d=zohomail.com; s=zohoarc; b=AZT+AB0/n3wATe2XbHMetmslK0X9Yfz/Z2ABYAlWjKfZ9L4CN/+xEm3IdpQVqspLN4Aba1CtJC7TJVM/+ZZWE06Xqk9pIK8UWCKept2SObAiJgXlFSoUQcnIDt08GuhwZJQ0PpDjDdMpWa+vZTe1Y+cbqzcsY2/uIXaI3sbPpP4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1675333306; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=5NYImzWuIO0Xy8gBlAgPPzqisGQsBd06NWjUA++SIgE=; b=gzFiqjLvMtMfyVHq82qp4B8jZeOzMs3MWg+ZYrE1lOZuZTwZxr9JNGqGxjOizFOTKD+NWzfnZ+fbzj4DnoeYjtOPL4NgxY5urpTvKYn9Y07WhM78c6+Sx6s9XcgYYZHpSA/x7lW8ybMMlJwOEzTEYotbCUVczNHGQZgWhK9zyYE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+99452+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1675333306053139.24659582610263; Thu, 2 Feb 2023 02:21:46 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id 6gSzYY1788612xXejUzmgZED; Thu, 02 Feb 2023 02:21:45 -0800 X-Received: from mail-ej1-f53.google.com (mail-ej1-f53.google.com [209.85.218.53]) by mx.groups.io with SMTP id smtpd.web11.11511.1675333304939843723 for ; Thu, 02 Feb 2023 02:21:45 -0800 X-Received: by mail-ej1-f53.google.com with SMTP id p26so4454269ejx.13 for ; Thu, 02 Feb 2023 02:21:44 -0800 (PST) X-Gm-Message-State: zhtCeuKkQlOG4feIplRXgcFsx1787277AA= X-Google-Smtp-Source: AK7set96UtqWP2IOlCnjdAH0EjSOvgHvyhzB5xr3MsEZ9K20D9ZTkNzvkeUY5pVVTCkvv6uiOcx+vg== X-Received: by 2002:a17:906:4d50:b0:877:a7ec:5ff with SMTP id b16-20020a1709064d5000b00877a7ec05ffmr5650753ejv.10.1675333303306; Thu, 02 Feb 2023 02:21:43 -0800 (PST) X-Received: from localhost.localdomain ([176.62.67.29]) by smtp.gmail.com with ESMTPSA id ci22-20020a170906c35600b0087bcda2b07bsm10013121ejb.202.2023.02.02.02.21.42 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 02 Feb 2023 02:21:43 -0800 (PST) From: "Savva Mitrofanov" To: devel@edk2.groups.io Cc: =?UTF-8?q?Marvin=20H=C3=A4user?= , Pedro Falcato , Vitaly Cheptsov Subject: [edk2-devel] [edk2-platforms][PATCH v4 06/12] Ext4Pkg: Corrects integer overflow check logic in DiskUtil Date: Thu, 2 Feb 2023 16:21:27 +0600 Message-Id: <20230202102133.51606-7-savvamtr@gmail.com> In-Reply-To: <20230202102133.51606-1-savvamtr@gmail.com> References: <20230202102133.51606-1-savvamtr@gmail.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,savvamtr@gmail.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1675333305; bh=GCx/jx5CbNEWv4kMOxj4MCuQ8+WlpenIUbsm13eQWh8=; h=Cc:Content-Type:Date:From:Reply-To:Subject:To; b=jGAhSThAbdi4fvPe2K9rkMJiGrl+Z8eO6upBowBQdoXNs869b2dTpq1P/r7sv0np7v0 WaE6ZvIXu0p/AXT4Axh5f2OkdXT0M4Od0l2dXPnoWhqtWVbP45olHDOASgDLzgBbwgPBW LJz0MehV3G2WmqQIFMFDq07HI8jQEoGZAyE= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1675333307222100025 Content-Type: text/plain; charset="utf-8" Corrects multiplication overflow check code and adds additional check for emptiness of number of blocks and block number Cc: Marvin H=C3=A4user Cc: Pedro Falcato Cc: Vitaly Cheptsov Fixes: d9ceedca6c8f ("Ext4Pkg: Add Ext4Dxe driver.") Signed-off-by: Savva Mitrofanov Reviewed-by: Marvin H=C3=A4user Reviewed-by: Pedro Falcato --- Features/Ext4Pkg/Ext4Pkg.dsc | 2 +- Features/Ext4Pkg/Ext4Dxe/DiskUtil.c | 18 ++++++++++++++---- Features/Ext4Pkg/Ext4Dxe/Extents.c | 15 ++++++++++++--- 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/Features/Ext4Pkg/Ext4Pkg.dsc b/Features/Ext4Pkg/Ext4Pkg.dsc index 59bc327ebf6e..621c63eaf92d 100644 --- a/Features/Ext4Pkg/Ext4Pkg.dsc +++ b/Features/Ext4Pkg/Ext4Pkg.dsc @@ -46,7 +46,7 @@ DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf OrderedCollectionLib|MdePkg/Library/BaseOrderedCollectionRedBlackTreeLib= /BaseOrderedCollectionRedBlackTreeLib.inf BaseUcs2Utf8Lib|RedfishPkg/Library/BaseUcs2Utf8Lib/BaseUcs2Utf8Lib.inf - =20 + # # Required for stack protector support # diff --git a/Features/Ext4Pkg/Ext4Dxe/DiskUtil.c b/Features/Ext4Pkg/Ext4Dxe= /DiskUtil.c index 32da35f7d9f5..5df9ce5bafcf 100644 --- a/Features/Ext4Pkg/Ext4Dxe/DiskUtil.c +++ b/Features/Ext4Pkg/Ext4Dxe/DiskUtil.c @@ -54,17 +54,20 @@ Ext4ReadBlocks ( UINT64 Offset; UINTN Length; =20 + ASSERT (NumberBlocks !=3D 0); + ASSERT (BlockNumber !=3D EXT4_BLOCK_FILE_HOLE); + Offset =3D MultU64x32 (BlockNumber, Partition->BlockSize); Length =3D NumberBlocks * Partition->BlockSize; =20 // Check for overflow on the block -> byte conversions. // Partition->BlockSize is never 0, so we don't need to check for that. =20 - if (Offset > DivU64x32 ((UINT64)-1, Partition->BlockSize)) { + if (DivU64x64Remainder (Offset, BlockNumber, NULL) !=3D Partition->Block= Size) { return EFI_INVALID_PARAMETER; } =20 - if (Length > (UINTN)-1/Partition->BlockSize) { + if (Length / NumberBlocks !=3D Partition->BlockSize) { return EFI_INVALID_PARAMETER; } =20 @@ -92,14 +95,21 @@ Ext4AllocAndReadBlocks ( VOID *Buf; UINTN Length; =20 + // Check that number of blocks isn't empty, because + // this is incorrect condition for opened partition, + // so we just early-exit + if ((NumberBlocks =3D=3D 0) || (BlockNumber =3D=3D EXT4_BLOCK_FILE_HOLE)= ) { + return NULL; + } + Length =3D NumberBlocks * Partition->BlockSize; =20 - if (Length > (UINTN)-1/Partition->BlockSize) { + // Check for integer overflow + if (Length / NumberBlocks !=3D Partition->BlockSize) { return NULL; } =20 Buf =3D AllocatePool (Length); - if (Buf =3D=3D NULL) { return NULL; } diff --git a/Features/Ext4Pkg/Ext4Dxe/Extents.c b/Features/Ext4Pkg/Ext4Dxe/= Extents.c index e1001d0a4292..99cb0f204fc2 100644 --- a/Features/Ext4Pkg/Ext4Dxe/Extents.c +++ b/Features/Ext4Pkg/Ext4Dxe/Extents.c @@ -237,6 +237,7 @@ Ext4GetExtent ( EXT4_EXTENT_HEADER *ExtHeader; EXT4_EXTENT_INDEX *Index; EFI_STATUS Status; + EXT4_BLOCK_NR BlockNumber; =20 Inode =3D File->Inode; Ext =3D NULL; @@ -288,7 +289,16 @@ Ext4GetExtent ( // Therefore, we can use binary search, and it's actually the standard= for doing so // (see FreeBSD). =20 - Index =3D Ext4BinsearchExtentIndex (ExtHeader, LogicalBlock); + Index =3D Ext4BinsearchExtentIndex (ExtHeader, LogicalBlock); + BlockNumber =3D Ext4ExtentIdxLeafBlock (Index); + + // Check that block isn't file hole + if (BlockNumber =3D=3D EXT4_BLOCK_FILE_HOLE) { + if (Buffer !=3D NULL) { + FreePool (Buffer); + } + return EFI_NO_MAPPING; + } =20 if (Buffer =3D=3D NULL) { Buffer =3D AllocatePool (Partition->BlockSize); @@ -298,8 +308,7 @@ Ext4GetExtent ( } =20 // Read the leaf block onto the previously-allocated buffer. - - Status =3D Ext4ReadBlocks (Partition, Buffer, 1, Ext4ExtentIdxLeafBloc= k (Index)); + Status =3D Ext4ReadBlocks (Partition, Buffer, 1, BlockNumber); if (EFI_ERROR (Status)) { FreePool (Buffer); return Status; --=20 2.39.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#99452): https://edk2.groups.io/g/devel/message/99452 Mute This Topic: https://groups.io/mt/96697371/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Sat Apr 27 14:21:53 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+99453+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+99453+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1675333306; cv=none; d=zohomail.com; s=zohoarc; b=Wfjx0TrLBd9MBlCnjxDPlDivMfK6mQ2G9hbTyz7E4GHNKvJI0nzPIZPFKcw/2tLJriSX9D9lrWH+6nS2EAn3rJGsiD6gielp3tMNVU91RFfbqyNO0qvGRdD8L5+oHQJeEYWiBr61YghiP5cgc36NSHrAmKrQf94s8ZtW1QPnIxo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1675333306; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=xz/cxcPDgsOMiWhnoUrvL/jUIUBdv74BlUp5PKnpAL8=; b=dmGHi+TEEV6iFscEVZU0R4ZBJFqddJAMsn5LKl/tNyRkRK8hnIjRYvag4mb1TViNVF5TslA3TTOpJ8eJ4Di/pBVffg+dc+GWHnD19mdVAUMzNBoTY2/Ia8Qj//ufn+UTGhhc33ZFAZPeOEUyZrQrcE5jjnBDuwAjh/mgE4cXupE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+99453+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1675333306625386.8624147201583; Thu, 2 Feb 2023 02:21:46 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id PQB7YY1788612x1oJQaXaynM; Thu, 02 Feb 2023 02:21:46 -0800 X-Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.49]) by mx.groups.io with SMTP id smtpd.web10.11487.1675333300851208931 for ; Thu, 02 Feb 2023 02:21:45 -0800 X-Received: by mail-ej1-f49.google.com with SMTP id m2so4525218ejb.8 for ; Thu, 02 Feb 2023 02:21:44 -0800 (PST) X-Gm-Message-State: b1ECM1CypZLOOw6cheQ7det2x1787277AA= X-Google-Smtp-Source: AK7set97UMS3YRKzfadnF58/1/bC6rt6KOzydsRL3hXD8iZ2+1tIPZIw+3dNKQvFNEcQW8oHrRvIIQ== X-Received: by 2002:a17:906:4fc7:b0:87b:1be:a8c2 with SMTP id i7-20020a1709064fc700b0087b01bea8c2mr6302649ejw.73.1675333304365; Thu, 02 Feb 2023 02:21:44 -0800 (PST) X-Received: from localhost.localdomain ([176.62.67.29]) by smtp.gmail.com with ESMTPSA id ci22-20020a170906c35600b0087bcda2b07bsm10013121ejb.202.2023.02.02.02.21.43 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 02 Feb 2023 02:21:44 -0800 (PST) From: "Savva Mitrofanov" To: devel@edk2.groups.io Cc: =?UTF-8?q?Marvin=20H=C3=A4user?= , Pedro Falcato , Vitaly Cheptsov Subject: [edk2-devel] [edk2-platforms][PATCH v4 07/12] Ext4Pkg: Check that source file is directory in Ext4OpenInternal Date: Thu, 2 Feb 2023 16:21:28 +0600 Message-Id: <20230202102133.51606-8-savvamtr@gmail.com> In-Reply-To: <20230202102133.51606-1-savvamtr@gmail.com> References: <20230202102133.51606-1-savvamtr@gmail.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,savvamtr@gmail.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1675333306; bh=qAn6Sh9X1+ZzlbIsvcPrvkYlGvoNdBGnIQBjdC4DRG4=; h=Cc:Content-Type:Date:From:Reply-To:Subject:To; b=SVWUJ/KWO46RvR6QgM2ilQJfK/OaGg6SGGyxlzBXX5pky9RhF/LcI0glb1Ip5y9IXen pQa4d9B7h7iDCmnZ5cPv9CUkMY/dFzPsC8l6ufXnmqrCrt3YfNqothKguqwgVvE9IL39i RD936QDYD4QB1+PJvmX8WlrL8lfWaUf2JWo= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1675333307208100023 Content-Type: text/plain; charset="utf-8" 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=C3=A4user Cc: Pedro Falcato Cc: Vitaly Cheptsov Fixes: d9ceedca6c8f ("Ext4Pkg: Add Ext4Dxe driver.") Signed-off-by: Savva Mitrofanov Reviewed-by: Pedro Falcato Reviewed-by: Marvin H=C3=A4user --- 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/Fil= e.c index 8dfe324255f4..9dde4a5d1a2d 100644 --- a/Features/Ext4Pkg/Ext4Dxe/File.c +++ b/Features/Ext4Pkg/Ext4Dxe/File.c @@ -207,6 +207,11 @@ Ext4OpenInternal ( Level =3D 0; =20 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 t= he base directory if (FileName[0] =3D=3D L'\\') { FileName++; @@ -219,6 +224,10 @@ Ext4OpenInternal ( return EFI_ACCESS_DENIED; } =20 + if (!Ext4FileIsDir (Current)) { + return EFI_INVALID_PARAMETER; + } + // Discard leading path separators while (FileName[0] =3D=3D L'\\') { FileName++; @@ -242,10 +251,6 @@ Ext4OpenInternal ( =20 DEBUG ((DEBUG_FS, "[ext4] Opening %s\n", PathSegment)); =20 - if (!Ext4FileIsDir (Current)) { - return EFI_INVALID_PARAMETER; - } - if (!Ext4IsLastPathSegment (FileName)) { if (!Ext4DirCanLookup (Current)) { return EFI_ACCESS_DENIED; --=20 2.39.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#99453): https://edk2.groups.io/g/devel/message/99453 Mute This Topic: https://groups.io/mt/96697372/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Sat Apr 27 14:21:53 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+99454+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+99454+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1675333308; cv=none; d=zohomail.com; s=zohoarc; b=Q2q307vkE/v1xYUiK24taNFJo0/W/+Mky/eTej1wOrztoZhc6E7bQ4zXLiJHAq/BJ7TO70hMEGzrWc/9QppxCDGlb5AnllkjhHLzjizDrpvQGmH9EPcEwvdScDd8Rw83Lh5GrKM7DFq4mttzbCnARqlXOMuFYK9Bam76oX/n1+U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1675333308; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=iQtBi95zX9zSiqqOpR94J0bl/gT/mqdmvxZ4cAVOw10=; b=kL/1xvPfGpXArvzBrwC8seZULOGci1eFhKLn3JD3KslCVTzaTPxOgSGaXkQBsvX8UxvPI7MG7jP/j1Eqz+qvzGURvcEn4bsKtctt1HUVozb3QbIZCaL/xvP7gLRvuxV1T/AkWQNdB6um0y+4FpaQCzogmkWziWhzNhjoC4c8YwM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+99454+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1675333308263706.390157055863; Thu, 2 Feb 2023 02:21:48 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id nMAiYY1788612xLM21idPvUq; Thu, 02 Feb 2023 02:21:47 -0800 X-Received: from mail-ed1-f48.google.com (mail-ed1-f48.google.com [209.85.208.48]) by mx.groups.io with SMTP id smtpd.web10.11491.1675333307236260441 for ; Thu, 02 Feb 2023 02:21:47 -0800 X-Received: by mail-ed1-f48.google.com with SMTP id cw4so1437261edb.13 for ; Thu, 02 Feb 2023 02:21:47 -0800 (PST) X-Gm-Message-State: GF41J21erSeqNMizf3cGpNicx1787277AA= X-Google-Smtp-Source: AK7set+FyBLMcsanAJAnx4P9r3yH0FTAl3bAGLdnu5oFnE1nW4IsKZ9+5yA2J49h08mbw+Ig17Mkyw== X-Received: by 2002:a05:6402:1207:b0:49e:351b:5ab3 with SMTP id c7-20020a056402120700b0049e351b5ab3mr5597988edw.6.1675333305591; Thu, 02 Feb 2023 02:21:45 -0800 (PST) X-Received: from localhost.localdomain ([176.62.67.29]) by smtp.gmail.com with ESMTPSA id ci22-20020a170906c35600b0087bcda2b07bsm10013121ejb.202.2023.02.02.02.21.44 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 02 Feb 2023 02:21:45 -0800 (PST) From: "Savva Mitrofanov" To: devel@edk2.groups.io Cc: =?UTF-8?q?Marvin=20H=C3=A4user?= , Pedro Falcato , Vitaly Cheptsov Subject: [edk2-devel] [edk2-platforms][PATCH v4 08/12] Ext4Pkg: Check VolumeName allocation correctness in Ext4GetVolumeName Date: Thu, 2 Feb 2023 16:21:29 +0600 Message-Id: <20230202102133.51606-9-savvamtr@gmail.com> In-Reply-To: <20230202102133.51606-1-savvamtr@gmail.com> References: <20230202102133.51606-1-savvamtr@gmail.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,savvamtr@gmail.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1675333307; bh=qT8BsDrLBsyb7kl44PoRi6R7xl6upIGA6miIgOgSI4o=; h=Cc:Content-Type:Date:From:Reply-To:Subject:To; b=Ms6XoiZQmKs3+fwHqVHPB7OlDobNbxPzyV80rDrMvZ4TYaUlaYQtyBH3GSHua53oJ9l Dy3dD92sqGgffiZlx1OnXzIUgFph4SuAlgwnjkJJLGMSCXLqMftFf0t2F8Ec0u0fdS5IZ iUd9wxkfvvhFS88BsoH7aQtrTiQOKEou2NI= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1675333309230100032 Content-Type: text/plain; charset="utf-8" Missing check in some cases leads to failed StrCpyS call in Ext4GetVolumeLabelInfo. Also correct condition that checks Inode pointer for being NULL in Ext4AllocateInode Cc: Marvin H=C3=A4user Cc: Pedro Falcato Cc: Vitaly Cheptsov Fixes: cfbbae595eec ("Ext4Pkg: Add handling of EFI_FILE_SYSTEM_VOLUME_LABEL= GetInfo().") Signed-off-by: Savva Mitrofanov Reviewed-by: Pedro Falcato Reviewed-by: Marvin H=C3=A4user --- Features/Ext4Pkg/Ext4Dxe/File.c | 10 ++++++++-- Features/Ext4Pkg/Ext4Dxe/Inode.c | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Features/Ext4Pkg/Ext4Dxe/File.c b/Features/Ext4Pkg/Ext4Dxe/Fil= e.c index 9dde4a5d1a2d..677caf88fbdc 100644 --- a/Features/Ext4Pkg/Ext4Dxe/File.c +++ b/Features/Ext4Pkg/Ext4Dxe/File.c @@ -719,7 +719,11 @@ Ext4GetVolumeName ( =20 VolNameLength =3D StrLen (VolumeName); } else { - VolumeName =3D AllocateZeroPool (sizeof (CHAR16)); + VolumeName =3D AllocateZeroPool (sizeof (CHAR16)); + if (VolumeName =3D=3D NULL) { + return EFI_OUT_OF_RESOURCES; + } + VolNameLength =3D 0; } =20 @@ -786,7 +790,9 @@ Ext4GetFilesystemInfo ( Info->VolumeSize =3D MultU64x32 (TotalBlocks, Part->BlockSize); Info->FreeSpace =3D MultU64x32 (FreeBlocks, Part->BlockSize); =20 - StrCpyS (Info->VolumeLabel, VolNameLength + 1, VolumeName); + Status =3D StrCpyS (Info->VolumeLabel, VolNameLength + 1, VolumeName); + + ASSERT_EFI_ERROR (Status); =20 FreePool (VolumeName); =20 diff --git a/Features/Ext4Pkg/Ext4Dxe/Inode.c b/Features/Ext4Pkg/Ext4Dxe/In= ode.c index e44b5638599f..90e3eb88f523 100644 --- a/Features/Ext4Pkg/Ext4Dxe/Inode.c +++ b/Features/Ext4Pkg/Ext4Dxe/Inode.c @@ -230,7 +230,7 @@ Ext4AllocateInode ( =20 Inode =3D AllocateZeroPool (InodeSize); =20 - if (!Inode) { + if (Inode =3D=3D NULL) { return NULL; } =20 --=20 2.39.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#99454): https://edk2.groups.io/g/devel/message/99454 Mute This Topic: https://groups.io/mt/96697373/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Sat Apr 27 14:21:53 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+99455+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+99455+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1675333309; cv=none; d=zohomail.com; s=zohoarc; b=dewSXyotSru4kHznKocxIZUUxfBP8rDduDFj1/CQkg+2P4McztXOuvCUCstLktxzpet8LsS7RSP4NWEfsDX6v2Yh4Bhx75ZCKv1FBastxnk/cP4vZcO+CZDv+i4uZ8RxvU0pvCMajdYd2G+gcVk9n3a2vPP8rmaeXQD9GiDmhv0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1675333309; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=vAQ5kOw8tWbF3ddWjLnJpmrim6XBk6do66whsWJyVRU=; b=FM8gkDhW/2hnbpaznAnpNql9407T7dRpTS3s6ENmZ33uw2EJo0LygK1zDcV6ja9BGpfa+5GhuT09p+ZjByDnlzQ443hKwrnNeiXuvsTtTFECHe2fKsZzCJoez3npKL8q4BAhgNcCRSnLi7TD8a52AK5xDhpsuEQhjGZlcJxGEIQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+99455+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1675333309457168.71189170808702; Thu, 2 Feb 2023 02:21:49 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id uUKmYY1788612x2mWrdtRoqV; Thu, 02 Feb 2023 02:21:49 -0800 X-Received: from mail-ej1-f53.google.com (mail-ej1-f53.google.com [209.85.218.53]) by mx.groups.io with SMTP id smtpd.web10.11492.1675333308245637613 for ; Thu, 02 Feb 2023 02:21:48 -0800 X-Received: by mail-ej1-f53.google.com with SMTP id k4so4622209eje.1 for ; Thu, 02 Feb 2023 02:21:48 -0800 (PST) X-Gm-Message-State: ISqa7p9iR4pK4Njn3tdpMe5tx1787277AA= X-Google-Smtp-Source: AK7set9q3GKw/DHpEH0PRL2CkWszUtMaKeZWshdoSND+OV1SipXQ9iDkrkfzqvANTWTqThkKLyMcpQ== X-Received: by 2002:a17:906:5ac7:b0:882:1b70:8962 with SMTP id x7-20020a1709065ac700b008821b708962mr5492645ejs.76.1675333306640; Thu, 02 Feb 2023 02:21:46 -0800 (PST) X-Received: from localhost.localdomain ([176.62.67.29]) by smtp.gmail.com with ESMTPSA id ci22-20020a170906c35600b0087bcda2b07bsm10013121ejb.202.2023.02.02.02.21.45 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 02 Feb 2023 02:21:46 -0800 (PST) From: "Savva Mitrofanov" To: devel@edk2.groups.io Cc: =?UTF-8?q?Marvin=20H=C3=A4user?= , Pedro Falcato , Vitaly Cheptsov Subject: [edk2-devel] [edk2-platforms][PATCH v4 09/12] Ext4Pkg: Add missing exit Status in Ext4OpenDirent Date: Thu, 2 Feb 2023 16:21:30 +0600 Message-Id: <20230202102133.51606-10-savvamtr@gmail.com> In-Reply-To: <20230202102133.51606-1-savvamtr@gmail.com> References: <20230202102133.51606-1-savvamtr@gmail.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,savvamtr@gmail.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1675333309; bh=TTJh252Kv8xpDg9uRT7jH8O+R4V9o4nbIITb/+m+lbE=; h=Cc:Content-Type:Date:From:Reply-To:Subject:To; b=hkgICK+uZOJaeikyYXMrxxFydty829yFx1l5TH8SzKFLn6RB7REHWHZnhAqNHI3WRaD riwTbCDFr5loKRjIjmlOakENIH+Pr3D1GtmRhFe2QXDKDH6wE49IRSpie6l6C2gJfMel1 OfXtFA6S8e0gUsCYAJsNK/Nsg99ZlwpV6tA= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1675333311354100002 Content-Type: text/plain; charset="utf-8" Missing EFI_OUT_OF_RESOURCES exit status on failed Ext4CreateDentry leads to NULL-pointer dereference in Ext4GetFileInfo (passing NULL buffer in Ext4ReadDir) Cc: Marvin H=C3=A4user Cc: Pedro Falcato Cc: Vitaly Cheptsov Fixes: 21b1853880d5 ("Ext4Pkg: Add a directory entry tree.") Signed-off-by: Savva Mitrofanov Reviewed-by: Pedro Falcato Reviewed-by: Marvin H=C3=A4user --- Features/Ext4Pkg/Ext4Dxe/Directory.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Features/Ext4Pkg/Ext4Dxe/Directory.c b/Features/Ext4Pkg/Ext4Dx= e/Directory.c index c7992cc72717..dee8cfc66cb7 100644 --- a/Features/Ext4Pkg/Ext4Dxe/Directory.c +++ b/Features/Ext4Pkg/Ext4Dxe/Directory.c @@ -267,7 +267,8 @@ Ext4OpenDirent ( } else { File->Dentry =3D Ext4CreateDentry (FileName, Directory->Dentry); =20 - if (!File->Dentry) { + if (File->Dentry =3D=3D NULL) { + Status =3D EFI_OUT_OF_RESOURCES; goto Error; } } --=20 2.39.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#99455): https://edk2.groups.io/g/devel/message/99455 Mute This Topic: https://groups.io/mt/96697374/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Sat Apr 27 14:21:53 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+99456+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+99456+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1675333310; cv=none; d=zohomail.com; s=zohoarc; b=lewiwxBY0GeMZZFcQN+1I8iZOrfsfJHeSxTKTwXsy5P8eOhDdnppb5iIu3T4jhyTVe20oI5m5OelzEwXrXe8veMgeNu4AxED6FtKMVbD5sGjr6S4H+4tp5isgIqBhuXE2DYDMz20he7qkam9JG2dcgJNm9qy/PUbdpsNIB6NBfg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1675333310; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=Vv5b0HGyzDc+/Upz7L2tbJza4TwljgDkkpv+VeA0Vk8=; b=guU+gizy2HLyiHAULUyYuaFOg38p6KCFoVk8tZmg3sDZkLmbTIubn2Ak3lsxTDWkw8bVlrECZRTa9z6fbXTyk26k6YDv25npv9e0/wpGpYZkmjYfYw29GqifHDUNJzVR6T427KEEj+sKq21nC81aJarYjEDr37/uKfEIhrzMaTM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+99456+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 16753333104801006.9270229623529; Thu, 2 Feb 2023 02:21:50 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id Q25SYY1788612x8ZsODCjcmz; Thu, 02 Feb 2023 02:21:50 -0800 X-Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.41]) by mx.groups.io with SMTP id smtpd.web11.11513.1675333309306946478 for ; Thu, 02 Feb 2023 02:21:49 -0800 X-Received: by mail-ej1-f41.google.com with SMTP id k4so4622311eje.1 for ; Thu, 02 Feb 2023 02:21:49 -0800 (PST) X-Gm-Message-State: WIWGYWVAGa9ldRJ4KLNnNAOFx1787277AA= X-Google-Smtp-Source: AK7set+hcJWdCBCesW2wxt9E+xkKUe9kQHFwzc2j9wxUiFwPoDtEhanrC33yuO968MGDfjE3j+9t/Q== X-Received: by 2002:a17:906:684c:b0:877:a2d1:7560 with SMTP id a12-20020a170906684c00b00877a2d17560mr5068276ejs.27.1675333307675; Thu, 02 Feb 2023 02:21:47 -0800 (PST) X-Received: from localhost.localdomain ([176.62.67.29]) by smtp.gmail.com with ESMTPSA id ci22-20020a170906c35600b0087bcda2b07bsm10013121ejb.202.2023.02.02.02.21.46 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 02 Feb 2023 02:21:47 -0800 (PST) From: "Savva Mitrofanov" To: devel@edk2.groups.io Cc: =?UTF-8?q?Marvin=20H=C3=A4user?= , Pedro Falcato , Vitaly Cheptsov Subject: [edk2-devel] [edk2-platforms][PATCH v4 10/12] Ext4Pkg: Fixes build on MSVC Date: Thu, 2 Feb 2023 16:21:31 +0600 Message-Id: <20230202102133.51606-11-savvamtr@gmail.com> In-Reply-To: <20230202102133.51606-1-savvamtr@gmail.com> References: <20230202102133.51606-1-savvamtr@gmail.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,savvamtr@gmail.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1675333310; bh=ZqOOYMaD64tmmcZaPwiNXQbRzmVbU505BjHcMUe0O1w=; h=Cc:Content-Type:Date:From:Reply-To:Subject:To; b=EZQPyyGz0tLkQzB/nMjS1jFbHsT270rubxdt8OrZ/lmWkytZiKvGPJOwW9PfGbwWpfU r7+IXv7urdyr6ChFLZ/IlnIz2hCwVS51G53QIsDShotXd3tnmCfW190Yk1GYxyt9MXoaT CW9FqOUrQ11xl8Szs2OaUtGGwyBQAzLFs6w= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1675333311371100005 Content-Type: text/plain; charset="utf-8" Accessing array using index of uint64 type makes MSVC compiler to include `__allmul` function in NOOPT which is not referenced in IA32. So we null-terminates string using ReadSize, which should be equal to SymlinkSizeTmp after correct reading. Also adds missing MultU64x32 in Ext4Read. Cc: Marvin H=C3=A4user Cc: Pedro Falcato Cc: Vitaly Cheptsov Fixes: 7c46116b0e18 ("Ext4Pkg: Add ext2/3 support") Fixes: e81432fbacb7 ("Ext4Pkg: Add symbolic links support") Signed-off-by: Savva Mitrofanov Reviewed-by: Marvin H=C3=A4user Reviewed-by: Pedro Falcato --- Features/Ext4Pkg/Ext4Dxe/Inode.c | 4 ++-- Features/Ext4Pkg/Ext4Dxe/Symlink.c | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Features/Ext4Pkg/Ext4Dxe/Inode.c b/Features/Ext4Pkg/Ext4Dxe/In= ode.c index 90e3eb88f523..8db051d3c444 100644 --- a/Features/Ext4Pkg/Ext4Dxe/Inode.c +++ b/Features/Ext4Pkg/Ext4Dxe/Inode.c @@ -152,7 +152,7 @@ Ext4Read ( } else { // Uninitialized extents behave exactly the same as file holes, ex= cept they have // blocks already allocated to them. - HoleLen =3D (Ext4GetExtentLength (&Extent) * Partition->BlockSize)= - HoleOff; + HoleLen =3D MultU64x32 (Ext4GetExtentLength (&Extent), Partition->= BlockSize) - HoleOff; } =20 WasRead =3D HoleLen > RemainingRead ? RemainingRead : (UINTN)HoleLen; @@ -166,7 +166,7 @@ Ext4Read ( Partition->BlockSize ); ExtentLengthBytes =3D Extent.ee_len * Partition->BlockSize; - ExtentLogicalBytes =3D (UINT64)Extent.ee_block * Partition->BlockSiz= e; + ExtentLogicalBytes =3D MultU64x32 ((UINT64)Extent.ee_block, Partitio= n->BlockSize); ExtentOffset =3D CurrentSeek - ExtentLogicalBytes; ExtentMayRead =3D (UINTN)(ExtentLengthBytes - ExtentOffset); =20 diff --git a/Features/Ext4Pkg/Ext4Dxe/Symlink.c b/Features/Ext4Pkg/Ext4Dxe/= Symlink.c index 19b357ac6ba0..8b1511a38b55 100644 --- a/Features/Ext4Pkg/Ext4Dxe/Symlink.c +++ b/Features/Ext4Pkg/Ext4Dxe/Symlink.c @@ -1,7 +1,7 @@ /** @file Symbolic links routines =20 - Copyright (c) 2022 Savva Mitrofanov All rights reserved. + Copyright (c) 2022-2023 Savva Mitrofanov All rights reserved. SPDX-License-Identifier: BSD-2-Clause-Patent **/ =20 @@ -155,11 +155,6 @@ Ext4ReadSlowSymlink ( return Status; } =20 - // - // Add null-terminator - // - SymlinkTmp[SymlinkSizeTmp] =3D '\0'; - if (SymlinkSizeTmp !=3D ReadSize) { DEBUG (( DEBUG_FS, @@ -168,6 +163,11 @@ Ext4ReadSlowSymlink ( return EFI_VOLUME_CORRUPTED; } =20 + // + // Add null-terminator + // + SymlinkTmp[ReadSize] =3D '\0'; + *AsciiSymlinkSize =3D SymlinkAllocateSize; *AsciiSymlink =3D SymlinkTmp; =20 --=20 2.39.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#99456): https://edk2.groups.io/g/devel/message/99456 Mute This Topic: https://groups.io/mt/96697375/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Sat Apr 27 14:21:53 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+99457+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+99457+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1675333310; cv=none; d=zohomail.com; s=zohoarc; b=W4OQXj1zYwJ6GkmKX7wxRtuY0O8bU6ePOTP8wDpb+2kTvwU8kcZcizqs3uvJrrFw6xV6UC0HO5j8UZU6tuuaxFsCnUSVeuC3LWhlJqenNnoJ/OqugwcbgABd67fJsH2IiXPGHjWwic8PxIq1uZStE/ivUsbBiJE5OBpsxuMJAvA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1675333310; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=bgOp61ggPEUs8BTZ3XEic4o+9V8CkhWtK+ZH+ijmwYU=; b=bynkrsyvx2/d8GViVz+INvPIWsam+sSM7Dum6d7xaF1qnkRIf/EaXxTj1HEmz4zEYH4bkFmxzVmBwwacJS/OdxDTDR2X1nInp4b13YX8axive00CEDiemtC+ffc1VaO7cWkJGO08VSTA7xH+kCxmOHgcThNXm0cdIl/5xLKEPfo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+99457+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1675333310891576.9853320594736; Thu, 2 Feb 2023 02:21:50 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id b4IDYY1788612xy7dATj9s1c; Thu, 02 Feb 2023 02:21:50 -0800 X-Received: from mail-ej1-f53.google.com (mail-ej1-f53.google.com [209.85.218.53]) by mx.groups.io with SMTP id smtpd.web11.11511.1675333304939843723 for ; Thu, 02 Feb 2023 02:21:49 -0800 X-Received: by mail-ej1-f53.google.com with SMTP id p26so4454849ejx.13 for ; Thu, 02 Feb 2023 02:21:49 -0800 (PST) X-Gm-Message-State: Rjir2aZk9QX06t3GFuQkvbazx1787277AA= X-Google-Smtp-Source: AK7set9VBJGXJWd6IctluIrdpfmOrMqBKzvu840fGY6hZhYoS4CdM6ux77OG/Uyg75CYrslDJbYHzA== X-Received: by 2002:a17:907:7b99:b0:88d:ba89:1846 with SMTP id ne25-20020a1709077b9900b0088dba891846mr1993444ejc.23.1675333308759; Thu, 02 Feb 2023 02:21:48 -0800 (PST) X-Received: from localhost.localdomain ([176.62.67.29]) by smtp.gmail.com with ESMTPSA id ci22-20020a170906c35600b0087bcda2b07bsm10013121ejb.202.2023.02.02.02.21.47 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 02 Feb 2023 02:21:48 -0800 (PST) From: "Savva Mitrofanov" To: devel@edk2.groups.io Cc: =?UTF-8?q?Marvin=20H=C3=A4user?= , Pedro Falcato , Vitaly Cheptsov Subject: [edk2-devel] [edk2-platforms][PATCH v4 11/12] Ext4Pkg: Filter out directory entry names containing \0 as invalid Date: Thu, 2 Feb 2023 16:21:32 +0600 Message-Id: <20230202102133.51606-12-savvamtr@gmail.com> In-Reply-To: <20230202102133.51606-1-savvamtr@gmail.com> References: <20230202102133.51606-1-savvamtr@gmail.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,savvamtr@gmail.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1675333310; bh=Q7pys3fJjzv1b4nk0ycLqa+D61cigFMAIMVYiEZ2q/8=; h=Cc:Content-Type:Date:From:Reply-To:Subject:To; b=Ybf0EqnQzrOA6Fo+NH3a8lUQtuV+ZOtYXadZIuSARf5JlkEzloVC+SeABZaQLDUDA71 Vo3shZVnTI+tCAPHtzfwuhWv3RN9lzEPj5SWb8DRV7MIb/+y42ZFcO9j5QiENR5aMfrb2 +4RnOsN2EXj0Z/81U7kyU0/q8yeCFHy/JP0= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1675333311363100004 Content-Type: text/plain; charset="utf-8" The directory entry name conventions forbid having null-terminator symbols in its body and can lead to undefined behavior conditions and crashes Cc: Marvin H=C3=A4user Cc: Pedro Falcato Cc: Vitaly Cheptsov Fixes: 89b2bb0db263 ("Ext4Pkg: Fix and clarify handling regarding non-utf8 = dir entries") Signed-off-by: Savva Mitrofanov Reviewed-by: Pedro Falcato Reviewed-by: Marvin H=C3=A4user --- Features/Ext4Pkg/Ext4Dxe/Directory.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Features/Ext4Pkg/Ext4Dxe/Directory.c b/Features/Ext4Pkg/Ext4Dx= e/Directory.c index dee8cfc66cb7..88f89a40534c 100644 --- a/Features/Ext4Pkg/Ext4Dxe/Directory.c +++ b/Features/Ext4Pkg/Ext4Dxe/Directory.c @@ -28,9 +28,16 @@ Ext4GetUcs2DirentName ( { CHAR8 Utf8NameBuf[EXT4_NAME_MAX + 1]; UINT16 *Str; + UINT8 Index; EFI_STATUS Status; =20 - CopyMem (Utf8NameBuf, Entry->name, Entry->name_len); + for (Index =3D 0; Index < Entry->name_len; ++Index) { + if (Entry->name[Index] =3D=3D '\0') { + return EFI_INVALID_PARAMETER; + } + + Utf8NameBuf[Index] =3D Entry->name[Index]; + } =20 Utf8NameBuf[Entry->name_len] =3D '\0'; =20 --=20 2.39.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#99457): https://edk2.groups.io/g/devel/message/99457 Mute This Topic: https://groups.io/mt/96697376/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Sat Apr 27 14:21:53 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+99458+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+99458+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1675333316; cv=none; d=zohomail.com; s=zohoarc; b=avi1m3GUCg2Ps1UFdJcKD3dgNJPKE2p4MQB5T8MKI91Dvt5v39rKy5yS4CenNzzqmvB8e15KGqX/wq4WLz95chEvpTFBh/AANJp1pu0iJ7r7TD+kTyvr5lgADF5ULy1D7ZgvBEvvD8Qmf5V49aKnwppMhFZjutlg+j4RS8kkFeo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1675333316; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=8CR3U4YbeXuQfLdShQPnR7QnopmQs8NmOVQcabdYhT0=; b=aMtUZn8r+yc4kWXMFBk2ObSFLpZP84vzF8Wfb1QKVIKnOi1ee42A6sSZW+WTsFDieYNdAIrFj7rp8dYs1gOxtU0tsCWY25Dbb4WHkLmFyJnVUDtkTwLgQpqHGuR0zXL2Ul997knAi1RHj0sWFXzUoIdrmkDOlsMNmKzlOCp1zDo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+99458+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1675333316575755.5657834022179; Thu, 2 Feb 2023 02:21:56 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id YwP9YY1788612x7QN1PORbSG; Thu, 02 Feb 2023 02:21:56 -0800 X-Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com [209.85.218.54]) by mx.groups.io with SMTP id smtpd.web10.11489.1675333302793373515 for ; Thu, 02 Feb 2023 02:21:50 -0800 X-Received: by mail-ej1-f54.google.com with SMTP id lu11so4594916ejb.3 for ; Thu, 02 Feb 2023 02:21:50 -0800 (PST) X-Gm-Message-State: cQz18KuULZ7bIdDAAm4RYj5ax1787277AA= X-Google-Smtp-Source: AK7set8Mr2wZ/I6OmRuQl54egMPfoGhRovmHU/YGkTSDXk0q4jb7s50vNj4olcNJC5bg7EMdHM+dkA== X-Received: by 2002:a17:906:5945:b0:888:787d:2064 with SMTP id g5-20020a170906594500b00888787d2064mr5722453ejr.75.1675333309795; Thu, 02 Feb 2023 02:21:49 -0800 (PST) X-Received: from localhost.localdomain ([176.62.67.29]) by smtp.gmail.com with ESMTPSA id ci22-20020a170906c35600b0087bcda2b07bsm10013121ejb.202.2023.02.02.02.21.48 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 02 Feb 2023 02:21:49 -0800 (PST) From: "Savva Mitrofanov" To: devel@edk2.groups.io Cc: =?UTF-8?q?Marvin=20H=C3=A4user?= , Pedro Falcato , Vitaly Cheptsov Subject: [edk2-devel] [edk2-platforms][PATCH v4 12/12] Ext4Pkg: Corrects memory leak in Ext4ReadSlowSymlink Date: Thu, 2 Feb 2023 16:21:33 +0600 Message-Id: <20230202102133.51606-13-savvamtr@gmail.com> In-Reply-To: <20230202102133.51606-1-savvamtr@gmail.com> References: <20230202102133.51606-1-savvamtr@gmail.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,savvamtr@gmail.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1675333316; bh=tuRhRqW9ovBd6nC4bRKx0+lggFSwIMQWUDeYMHRil0E=; h=Cc:Content-Type:Date:From:Reply-To:Subject:To; b=vyw6Lgs4NjsYDGgUjHQXEszuV4UafVetjiEeOF7jz3qmcHe/wKc25fmjHGhmN3SlSWd 5q6wRXJSfIAZ1ny7vXoW+SZ8uQs1OcpE3eOqsk0mJnaiweTyCF0bBkb86M3kEB07RcyWp T4uEWvBhR/xpeNx7SWgUnLFSuNJe3CmfIMw= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1675333317249100002 Content-Type: text/plain; charset="utf-8" We need to free SymlinkTmp before exiting if SymlinkSizeTmp !=3D ReadSize condition is true Reported-by: Marvin H=C3=A4user Cc: Pedro Falcato Cc: Vitaly Cheptsov Fixes: e81432fbacb7 ("Ext4Pkg: Add symbolic links support") Signed-off-by: Savva Mitrofanov Reviewed-by: Marvin H=C3=A4user Reviewed-by: Pedro Falcato --- Features/Ext4Pkg/Ext4Dxe/Symlink.c | 1 + 1 file changed, 1 insertion(+) diff --git a/Features/Ext4Pkg/Ext4Dxe/Symlink.c b/Features/Ext4Pkg/Ext4Dxe/= Symlink.c index 8b1511a38b55..1189a99ded2b 100644 --- a/Features/Ext4Pkg/Ext4Dxe/Symlink.c +++ b/Features/Ext4Pkg/Ext4Dxe/Symlink.c @@ -160,6 +160,7 @@ Ext4ReadSlowSymlink ( DEBUG_FS, "[ext4] Error! The size of the read block doesn't match the value fr= om the inode!\n" )); + FreePool (SymlinkTmp); return EFI_VOLUME_CORRUPTED; } =20 --=20 2.39.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#99458): https://edk2.groups.io/g/devel/message/99458 Mute This Topic: https://groups.io/mt/96697377/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-