/** @file\r
Save the S3 data to S3 boot script.\r
\r
- Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2006 - 2020, Intel Corporation. All rights reserved.<BR>\r
\r
SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
EFI_BOOT_SCRIPT_IO_WRITE ScriptIoWrite;\r
\r
WidthInByte = (UINT8) (0x01 << (Width & 0x03));\r
+\r
+ //\r
+ // Truncation check\r
+ //\r
+ if ((Count > MAX_UINT8) ||\r
+ (WidthInByte * Count > MAX_UINT8 - sizeof (EFI_BOOT_SCRIPT_IO_WRITE))) {\r
+ return RETURN_OUT_OF_RESOURCES;\r
+ }\r
Length = (UINT8)(sizeof (EFI_BOOT_SCRIPT_IO_WRITE) + (WidthInByte * Count));\r
\r
Script = S3BootScriptGetEntryAddAddress (Length);\r
EFI_BOOT_SCRIPT_MEM_WRITE ScriptMemWrite;\r
\r
WidthInByte = (UINT8) (0x01 << (Width & 0x03));\r
+\r
+ //\r
+ // Truncation check\r
+ //\r
+ if ((Count > MAX_UINT8) ||\r
+ (WidthInByte * Count > MAX_UINT8 - sizeof (EFI_BOOT_SCRIPT_MEM_WRITE))) {\r
+ return RETURN_OUT_OF_RESOURCES;\r
+ }\r
Length = (UINT8)(sizeof (EFI_BOOT_SCRIPT_MEM_WRITE) + (WidthInByte * Count));\r
\r
Script = S3BootScriptGetEntryAddAddress (Length);\r
}\r
\r
WidthInByte = (UINT8) (0x01 << (Width & 0x03));\r
+\r
+ //\r
+ // Truncation check\r
+ //\r
+ if ((Count > MAX_UINT8) ||\r
+ (WidthInByte * Count > MAX_UINT8 - sizeof (EFI_BOOT_SCRIPT_PCI_CONFIG_WRITE))) {\r
+ return RETURN_OUT_OF_RESOURCES;\r
+ }\r
Length = (UINT8)(sizeof (EFI_BOOT_SCRIPT_PCI_CONFIG_WRITE) + (WidthInByte * Count));\r
\r
Script = S3BootScriptGetEntryAddAddress (Length);\r
}\r
\r
WidthInByte = (UINT8) (0x01 << (Width & 0x03));\r
+\r
+ //\r
+ // Truncation check\r
+ //\r
+ if ((Count > MAX_UINT8) ||\r
+ (WidthInByte * Count > MAX_UINT8 - sizeof (EFI_BOOT_SCRIPT_PCI_CONFIG2_WRITE))) {\r
+ return RETURN_OUT_OF_RESOURCES;\r
+ }\r
Length = (UINT8)(sizeof (EFI_BOOT_SCRIPT_PCI_CONFIG2_WRITE) + (WidthInByte * Count));\r
\r
Script = S3BootScriptGetEntryAddAddress (Length);\r
return Status;\r
}\r
\r
+ //\r
+ // Truncation check\r
+ //\r
+ if (BufferLength > MAX_UINT8 - sizeof (EFI_BOOT_SCRIPT_SMBUS_EXECUTE)) {\r
+ return RETURN_OUT_OF_RESOURCES;\r
+ }\r
DataSize = (UINT8)(sizeof (EFI_BOOT_SCRIPT_SMBUS_EXECUTE) + BufferLength);\r
\r
Script = S3BootScriptGetEntryAddAddress (DataSize);\r
UINT8 *Script;\r
EFI_BOOT_SCRIPT_INFORMATION ScriptInformation;\r
\r
+ //\r
+ // Truncation check\r
+ //\r
+ if (InformationLength > MAX_UINT8 - sizeof (EFI_BOOT_SCRIPT_INFORMATION)) {\r
+ return RETURN_OUT_OF_RESOURCES;\r
+ }\r
Length = (UINT8)(sizeof (EFI_BOOT_SCRIPT_INFORMATION) + InformationLength);\r
\r
Script = S3BootScriptGetEntryAddAddress (Length);\r
UINT8 *Script;\r
EFI_BOOT_SCRIPT_INFORMATION ScriptInformation;\r
\r
+ //\r
+ // Truncation check\r
+ //\r
+ if (InformationLength > MAX_UINT8 - sizeof (EFI_BOOT_SCRIPT_INFORMATION)) {\r
+ return RETURN_OUT_OF_RESOURCES;\r
+ }\r
Length = (UINT8)(sizeof (EFI_BOOT_SCRIPT_INFORMATION) + InformationLength);\r
\r
Script = S3BootScriptGetEntryAddAddress (Length);\r