public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Marvin Häuser" <mhaeuser@posteo.de>
To: Pedro Falcato <pedro.falcato@gmail.com>
Cc: Savva Mitrofanov <savvamtr@gmail.com>,
	devel@edk2.groups.io, Vitaly Cheptsov <vit9696@protonmail.com>
Subject: Re: [edk2-platforms][PATCH v3 10/11] Ext4Pkg: Fixes build on MSVC
Date: Fri, 27 Jan 2023 14:36:56 +0000	[thread overview]
Message-ID: <E44B0DF0-85BB-44B6-B66B-40BE078DBA41@posteo.de> (raw)
In-Reply-To: <CAKbZUD1jibK7uBDwuFndAzmJ1ozAQsghNkgB-B4BDiqHJT4a5w@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 3712 bytes --]

On 27. Jan 2023, at 15:33, Pedro Falcato <pedro.falcato@gmail.com> wrote:
> 
> On Fri, Jan 27, 2023 at 9:29 AM Savva Mitrofanov <savvamtr@gmail.com <mailto:savvamtr@gmail.com>> wrote:
>> 
>> 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äuser <mhaeuser@posteo.de>
>> Cc: Pedro Falcato <pedro.falcato@gmail.com>
>> Cc: Vitaly Cheptsov <vit9696@protonmail.com>
>> Fixes: 7c46116b0e18 ("Ext4Pkg: Add ext2/3 support")
>> Fixes: e81432fbacb7 ("Ext4Pkg: Add symbolic links support")
>> Signed-off-by: Savva Mitrofanov <savvamtr@gmail.com>
>> ---
>> 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/Inode.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, except they have
>>         // blocks already allocated to them.
>> -        HoleLen = (Ext4GetExtentLength (&Extent) * Partition->BlockSize) - HoleOff;
>> +        HoleLen = MultU64x32 (Ext4GetExtentLength (&Extent), Partition->BlockSize) - HoleOff;
>>       }
>> 
>>       WasRead = HoleLen > RemainingRead ? RemainingRead : (UINTN)HoleLen;
>> @@ -166,7 +166,7 @@ Ext4Read (
>>                            Partition->BlockSize
>>                            );
>>       ExtentLengthBytes  = Extent.ee_len * Partition->BlockSize;
>> -      ExtentLogicalBytes = (UINT64)Extent.ee_block * Partition->BlockSize;
>> +      ExtentLogicalBytes = MultU64x32 ((UINT64)Extent.ee_block, Partition->BlockSize);
>>       ExtentOffset       = CurrentSeek - ExtentLogicalBytes;
>>       ExtentMayRead      = (UINTN)(ExtentLengthBytes - ExtentOffset);
>> 
>> 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
>> 
>> -  Copyright (c) 2022 Savva Mitrofanov All rights reserved.
>> +  Copyright (c) 2022-2023 Savva Mitrofanov All rights reserved.
>>   SPDX-License-Identifier: BSD-2-Clause-Patent
>> **/
>> 
>> @@ -155,11 +155,6 @@ Ext4ReadSlowSymlink (
>>     return Status;
>>   }
>> 
>> -  //
>> -  // Add null-terminator
>> -  //
>> -  SymlinkTmp[SymlinkSizeTmp] = '\0';
>> -
>>   if (SymlinkSizeTmp != ReadSize) {
>>     DEBUG ((
>>       DEBUG_FS,
>> @@ -168,6 +163,11 @@ Ext4ReadSlowSymlink (
>>     return EFI_VOLUME_CORRUPTED;
>>   }
>> 
>> +  //
>> +  // Add null-terminator
>> +  //
> Sidenote: please don't use this comment style, I know it's prevalent
> in EDK2 and EDK2 platforms but Ext4Pkg just does:
> // Comment
> 
> Also, why are you bringing this null-termination down here?

I don't think there's a strong functional reason, but it adheres to the principle of not touching malformed data if at all possible. Not sure it needs to be part of this particular commit, but why not, it causes less noise this way.

>> +  SymlinkTmp[ReadSize] = '\0';
>> +
>>   *AsciiSymlinkSize = SymlinkAllocateSize;
>>   *AsciiSymlink     = SymlinkTmp;
>> 
>> --
>> 2.39.0
>> 
> 
> 
> -- 
> Pedro


[-- Attachment #2: Type: text/html, Size: 12062 bytes --]

  reply	other threads:[~2023-01-27 14:37 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 ` [edk2-platforms][PATCH v3 07/11] Ext4Pkg: Check that source file is directory in Ext4OpenInternal Savva Mitrofanov
2023-01-27 14:26   ` 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 [this message]
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=E44B0DF0-85BB-44B6-B66B-40BE078DBA41@posteo.de \
    --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