MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
The code to check FmpImageSize again OFFSET_OF
(EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER, UpdateHardwareInstance)
can be refined to check against FmpImageHeaderSize.
Cc: Jiewen Yao <jiewen.yao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Star Zeng <star.zeng@intel.com>
---
MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.c b/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.c
index a1347b5ce67c..ee3adce2a2f2 100644
--- a/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.c
+++ b/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.c
@@ -268,10 +268,6 @@ ValidateFmpCapsule (
}
FmpImageSize = (UINTN)EndOfPayload - ItemOffsetList[Index];
- if (FmpImageSize < OFFSET_OF(EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER, UpdateHardwareInstance)) {
- DEBUG((DEBUG_ERROR, "FmpImageSize(0x%lx) < EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER\n", FmpImageSize));
- return EFI_INVALID_PARAMETER;
- }
FmpImageHeaderSize = sizeof(EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER);
if ((ImageHeader->Version > EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER_INIT_VERSION) ||
(ImageHeader->Version < 1)) {
@@ -281,6 +277,10 @@ ValidateFmpCapsule (
if (ImageHeader->Version < EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER_INIT_VERSION) {
FmpImageHeaderSize = OFFSET_OF(EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER, UpdateHardwareInstance);
}
+ if (FmpImageSize < FmpImageHeaderSize) {
+ DEBUG((DEBUG_ERROR, "FmpImageSize(0x%lx) < FmpImageHeaderSize(0x%x)\n", FmpImageSize, FmpImageHeaderSize));
+ return EFI_INVALID_PARAMETER;
+ }
// No overflow
if (FmpImageSize != (UINT64)FmpImageHeaderSize + (UINT64)ImageHeader->UpdateImageSize + (UINT64)ImageHeader->UpdateVendorCodeSize) {
--
2.7.0.windows.1
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Reviewed-by: jiewen.yao@intel.com > -----Original Message----- > From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of Star > Zeng > Sent: Thursday, July 26, 2018 3:30 PM > To: edk2-devel@lists.01.org > Cc: Yao, Jiewen <jiewen.yao@intel.com>; Zeng, Star <star.zeng@intel.com> > Subject: [edk2] [PATCH] MdeModulePkg DxeCapsuleLibFmp: Refine the code to > check FmpImageSize. > > The code to check FmpImageSize again OFFSET_OF > (EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER, > UpdateHardwareInstance) > can be refined to check against FmpImageHeaderSize. > > Cc: Jiewen Yao <jiewen.yao@intel.com> > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Star Zeng <star.zeng@intel.com> > --- > MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.c > b/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.c > index a1347b5ce67c..ee3adce2a2f2 100644 > --- a/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.c > +++ b/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.c > @@ -268,10 +268,6 @@ ValidateFmpCapsule ( > } > FmpImageSize = (UINTN)EndOfPayload - ItemOffsetList[Index]; > > - if (FmpImageSize < > OFFSET_OF(EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER, > UpdateHardwareInstance)) { > - DEBUG((DEBUG_ERROR, "FmpImageSize(0x%lx) < > EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER\n", > FmpImageSize)); > - return EFI_INVALID_PARAMETER; > - } > FmpImageHeaderSize = > sizeof(EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER); > if ((ImageHeader->Version > > EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER_INIT_VERSION) || > (ImageHeader->Version < 1)) { > @@ -281,6 +277,10 @@ ValidateFmpCapsule ( > if (ImageHeader->Version < > EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER_INIT_VERSION) { > FmpImageHeaderSize = > OFFSET_OF(EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER, > UpdateHardwareInstance); > } > + if (FmpImageSize < FmpImageHeaderSize) { > + DEBUG((DEBUG_ERROR, "FmpImageSize(0x%lx) < > FmpImageHeaderSize(0x%x)\n", FmpImageSize, FmpImageHeaderSize)); > + return EFI_INVALID_PARAMETER; > + } > > // No overflow > if (FmpImageSize != (UINT64)FmpImageHeaderSize + > (UINT64)ImageHeader->UpdateImageSize + > (UINT64)ImageHeader->UpdateVendorCodeSize) { > -- > 2.7.0.windows.1 > > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
© 2016 - 2023 Red Hat, Inc.