From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-lf1-f53.google.com (mail-lf1-f53.google.com [209.85.167.53]) by mx.groups.io with SMTP id smtpd.web11.5559.1670602275517869580 for ; Fri, 09 Dec 2022 08:11:24 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20210112 header.b=XJzPdzHJ; spf=pass (domain: gmail.com, ip: 209.85.167.53, mailfrom: savvamtr@gmail.com) Received: by mail-lf1-f53.google.com with SMTP id c1so7767917lfi.7 for ; Fri, 09 Dec 2022 08:11:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=FWbUemoqMpmxKw91cVgUjtAoej8rS/WyM5E05AcLoM8=; b=XJzPdzHJC6N9/ti1zaiPALLfJizk3DzyfV8Yzn/GUbk0zBQe/LlEFZ5x8xKhXo35xy KXbrP99r8y1X29MBmOGbBSqYQdCkdNLamB8xKj7s+N/uPUds7DBDq8NGGjE3lj9EL8r6 0EqPa+uNloShAwD/e4HeaFJYaUTBP/EI3g/v60BUSA+IqSUlH3pTZ5Gn8xQqB4U5VaWn ntuFfwgcb+o8cf/vA8UdcQSoCSBO9+zi/0T6YpwqegAGqcmrj8DS8BwTQ08noV3f4/3Y JmVtuRc2S6mkDtvY/mPbWmq46whaIkM44gBHPVUIStB6rQBc4eeDFoimnF1yj3/c7QAt 4jXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=FWbUemoqMpmxKw91cVgUjtAoej8rS/WyM5E05AcLoM8=; b=lJ4QVV7Uyo/LheFHFzYCjdKE89qFdCMlVnRQiuUW1QUUuQhKb28rKSM17d+hWd8MS2 RI+qtt05l1aJvejpkpxRXy4vhGc+lYw2xdNTS85tWqslx74nJFg2aRVz04nmNWc1SY2c 0XDO8cu2VY53xVphGM5OQ7nHUMUMVFIWjpCWV4q6qK1u2PzGinhc4T6FhCttsu906tFV kucbpdbsVJSO0MPMepHHbpFUH4No9121qXXmrUXoaIwbIHdPcA1BBNfbL5cx7AzOUDxQ 4G1KHZt8iqyb2WdtCw64LwskMXOmDImQXGhCQNLMouBb34ndEcIL5A8mAIPaquMjZ+W/ XCJQ== X-Gm-Message-State: ANoB5pnxuvqPLfLryduFMbTAcDCnMZeJTML2lywYdbEuhs11/3g7zmN+ IGa44nKHd/NHyz6N00PZIn9Ytv8IXzLqyJdY X-Google-Smtp-Source: AA0mqf4PO9SpDXaWiqH0WXX8NV42dtnWvSlFvAbbqeMgh7z1Fo/tgTwo1SA6k/s25UUrwxmgjgON3w== X-Received: by 2002:a05:6512:74f:b0:4b5:aa59:28 with SMTP id c15-20020a056512074f00b004b5aa590028mr1347496lfs.38.1670602283792; Fri, 09 Dec 2022 08:11:23 -0800 (PST) Return-Path: Received: from localhost.localdomain ([109.194.121.139]) by smtp.gmail.com with ESMTPSA id v5-20020a05651203a500b00492c663bba2sm318430lfp.124.2022.12.09.08.11.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Dec 2022 08:11:23 -0800 (PST) From: "Savva Mitrofanov" To: devel@edk2.groups.io Cc: =?UTF-8?q?Marvin=20H=C3=A4user?= , Pedro Falcato , Vitaly Cheptsov Subject: [edk2-platforms][PATCH v1 09/12] Ext4Pkg: Correct integer overflow check on multiplication in DiskUtil Date: Fri, 9 Dec 2022 22:11:01 +0600 Message-Id: <20221209161104.70220-10-savvamtr@gmail.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221209161104.70220-1-savvamtr@gmail.com> References: <20221209161104.70220-1-savvamtr@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Multiplication overflow could result into small numbers, so we need also check it Cc: Marvin H=C3=A4user Cc: Pedro Falcato Cc: Vitaly Cheptsov Signed-off-by: Savva Mitrofanov --- Features/Ext4Pkg/Ext4Pkg.dsc | 2 +- Features/Ext4Pkg/Ext4Dxe/DiskUtil.c | 8 ++++---- 2 files changed, 5 insertions(+), 5 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=0D OrderedCollectionLib|MdePkg/Library/BaseOrderedCollectionRedBlackTreeLib= /BaseOrderedCollectionRedBlackTreeLib.inf=0D BaseUcs2Utf8Lib|RedfishPkg/Library/BaseUcs2Utf8Lib/BaseUcs2Utf8Lib.inf=0D - =0D +=0D #=0D # Required for stack protector support=0D #=0D diff --git a/Features/Ext4Pkg/Ext4Dxe/DiskUtil.c b/Features/Ext4Pkg/Ext4Dxe= /DiskUtil.c index 32da35f7d9f5..c4af956da926 100644 --- a/Features/Ext4Pkg/Ext4Dxe/DiskUtil.c +++ b/Features/Ext4Pkg/Ext4Dxe/DiskUtil.c @@ -60,11 +60,11 @@ Ext4ReadBlocks ( // Check for overflow on the block -> byte conversions.=0D // Partition->BlockSize is never 0, so we don't need to check for that.= =0D =0D - if (Offset > DivU64x32 ((UINT64)-1, Partition->BlockSize)) {=0D + if ((NumberBlocks !=3D 0) && (DivU64x64Remainder (Offset, BlockNumber, N= ULL) !=3D Partition->BlockSize)) {=0D return EFI_INVALID_PARAMETER;=0D }=0D =0D - if (Length > (UINTN)-1/Partition->BlockSize) {=0D + if ((NumberBlocks !=3D 0) && (Length / NumberBlocks !=3D Partition->Bloc= kSize)) {=0D return EFI_INVALID_PARAMETER;=0D }=0D =0D @@ -94,12 +94,12 @@ Ext4AllocAndReadBlocks ( =0D Length =3D NumberBlocks * Partition->BlockSize;=0D =0D - if (Length > (UINTN)-1/Partition->BlockSize) {=0D + // Check for integer overflow=0D + if ((NumberBlocks !=3D 0) && (Length / NumberBlocks !=3D Partition->Bloc= kSize)) {=0D return NULL;=0D }=0D =0D Buf =3D AllocatePool (Length);=0D -=0D if (Buf =3D=3D NULL) {=0D return NULL;=0D }=0D --=20 2.38.1