Implementation for EFI_HII_IMAGE_PROTOCOL.\r
\r
\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2007 - 2019, Intel Corporation. All rights reserved.<BR>\r
SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
//\r
NewBlockSize = (UINT32)Image->Width * Image->Height;\r
if (NewBlockSize > (MAX_UINT32 - (sizeof (EFI_HII_IIBT_IMAGE_24BIT_BLOCK) - sizeof (EFI_HII_RGB_PIXEL))) / 3) {\r
+ EfiReleaseLock (&mHiiDatabaseLock);\r
return EFI_OUT_OF_RESOURCES;\r
}\r
NewBlockSize = NewBlockSize * 3 + (sizeof (EFI_HII_IIBT_IMAGE_24BIT_BLOCK) - sizeof (EFI_HII_RGB_PIXEL));\r
// Length of the package header is represented using 24 bits. So MAX length is MAX_UINT24.\r
//\r
if (NewBlockSize > MAX_UINT24 - ImagePackage->ImagePkgHdr.Header.Length) {\r
+ EfiReleaseLock (&mHiiDatabaseLock);\r
return EFI_OUT_OF_RESOURCES;\r
}\r
//\r
// Length of the package header is represented using 24 bits. So MAX length is MAX_UINT24.\r
//\r
if (NewBlockSize > MAX_UINT24 - (sizeof (EFI_HII_IMAGE_PACKAGE_HDR) + sizeof (EFI_HII_IIBT_END_BLOCK))) {\r
+ EfiReleaseLock (&mHiiDatabaseLock);\r
return EFI_OUT_OF_RESOURCES;\r
}\r
//\r
//\r
NewBlockSize = (UINT32)Image->Width * Image->Height;\r
if (NewBlockSize > (MAX_UINT32 - (sizeof (EFI_HII_IIBT_IMAGE_24BIT_BLOCK) - sizeof (EFI_HII_RGB_PIXEL))) / 3) {\r
+ EfiReleaseLock (&mHiiDatabaseLock);\r
return EFI_OUT_OF_RESOURCES;\r
}\r
NewBlockSize = NewBlockSize * 3 + (sizeof (EFI_HII_IIBT_IMAGE_24BIT_BLOCK) - sizeof (EFI_HII_RGB_PIXEL));\r
if ((NewBlockSize > OldBlockSize) &&\r
(NewBlockSize - OldBlockSize > MAX_UINT24 - ImagePackage->ImagePkgHdr.Header.Length)\r
) {\r
+ EfiReleaseLock (&mHiiDatabaseLock);\r
return EFI_OUT_OF_RESOURCES;\r
}\r
\r