VirtualBox

Ignore:
Timestamp:
Aug 12, 2020 4:09:12 PM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
139865
Message:

Devices/EFI: Merge edk-stable202005 and make it build, bugref:4643

Location:
trunk/src/VBox/Devices/EFI/FirmwareNew
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/EFI/FirmwareNew

  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdeModulePkg/Library/PiDxeS3BootScriptLib/BootScriptSave.c

    r80721 r85718  
    22  Save the S3 data to S3 boot script.
    33
    4   Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
     4  Copyright (c) 2006 - 2020, Intel Corporation. All rights reserved.<BR>
    55
    66  SPDX-License-Identifier: BSD-2-Clause-Patent
     
    125125BOOLEAN                          mS3BootScriptTableSmmAllocated = FALSE;
    126126EFI_SMM_SYSTEM_TABLE2            *mBootScriptSmst = NULL;
     127BOOLEAN                          mAcpiS3Enable = TRUE;
    127128
    128129/**
     
    436437  BOOLEAN                        InSmm;
    437438  EFI_PHYSICAL_ADDRESS           Buffer;
     439
     440  if (!PcdGetBool (PcdAcpiS3Enable)) {
     441    mAcpiS3Enable = FALSE;
     442    DEBUG ((DEBUG_INFO, "%a: Skip S3BootScript because ACPI S3 disabled.\n", gEfiCallerBaseName));
     443    return RETURN_SUCCESS;
     444  }
    438445
    439446  S3TablePtr = (SCRIPT_TABLE_PRIVATE_DATA*)(UINTN)PcdGet64(PcdS3BootScriptTablePrivateDataPtr);
     
    562569{
    563570  EFI_STATUS                Status;
     571
     572  if (!mAcpiS3Enable) {
     573    return RETURN_SUCCESS;
     574  }
    564575
    565576  DEBUG ((EFI_D_INFO, "%a() in %a module\n", __FUNCTION__, gEfiCallerBaseName));
     
    811822  UINT8*                         NewEntryPtr;
    812823
     824  if (!mAcpiS3Enable) {
     825    return NULL;
     826  }
     827
    813828  if (mS3BootScriptTablePtr->SmmLocked) {
    814829    //
     
    9921007
    9931008  WidthInByte = (UINT8) (0x01 << (Width & 0x03));
     1009
     1010  //
     1011  // Truncation check
     1012  //
     1013  if ((Count > MAX_UINT8) ||
     1014      (WidthInByte * Count > MAX_UINT8 - sizeof (EFI_BOOT_SCRIPT_IO_WRITE))) {
     1015    return RETURN_OUT_OF_RESOURCES;
     1016  }
    9941017  Length = (UINT8)(sizeof (EFI_BOOT_SCRIPT_IO_WRITE) + (WidthInByte * Count));
    9951018
     
    10881111
    10891112  WidthInByte = (UINT8) (0x01 << (Width & 0x03));
     1113
     1114  //
     1115  // Truncation check
     1116  //
     1117  if ((Count > MAX_UINT8) ||
     1118      (WidthInByte * Count > MAX_UINT8 - sizeof (EFI_BOOT_SCRIPT_MEM_WRITE))) {
     1119    return RETURN_OUT_OF_RESOURCES;
     1120  }
    10901121  Length = (UINT8)(sizeof (EFI_BOOT_SCRIPT_MEM_WRITE) + (WidthInByte * Count));
    10911122
     
    11921223
    11931224  WidthInByte = (UINT8) (0x01 << (Width & 0x03));
     1225
     1226  //
     1227  // Truncation check
     1228  //
     1229  if ((Count > MAX_UINT8) ||
     1230      (WidthInByte * Count > MAX_UINT8 - sizeof (EFI_BOOT_SCRIPT_PCI_CONFIG_WRITE))) {
     1231    return RETURN_OUT_OF_RESOURCES;
     1232  }
    11941233  Length = (UINT8)(sizeof (EFI_BOOT_SCRIPT_PCI_CONFIG_WRITE) + (WidthInByte * Count));
    11951234
     
    13101349
    13111350  WidthInByte = (UINT8) (0x01 << (Width & 0x03));
     1351
     1352  //
     1353  // Truncation check
     1354  //
     1355  if ((Count > MAX_UINT8) ||
     1356      (WidthInByte * Count > MAX_UINT8 - sizeof (EFI_BOOT_SCRIPT_PCI_CONFIG2_WRITE))) {
     1357    return RETURN_OUT_OF_RESOURCES;
     1358  }
    13121359  Length = (UINT8)(sizeof (EFI_BOOT_SCRIPT_PCI_CONFIG2_WRITE) + (WidthInByte * Count));
    13131360
     
    15351582  }
    15361583
     1584  //
     1585  // Truncation check
     1586  //
     1587  if (BufferLength > MAX_UINT8 - sizeof (EFI_BOOT_SCRIPT_SMBUS_EXECUTE)) {
     1588    return RETURN_OUT_OF_RESOURCES;
     1589  }
    15371590  DataSize = (UINT8)(sizeof (EFI_BOOT_SCRIPT_SMBUS_EXECUTE) + BufferLength);
    15381591
     
    17221775  EFI_BOOT_SCRIPT_INFORMATION  ScriptInformation;
    17231776
     1777  //
     1778  // Truncation check
     1779  //
     1780  if (InformationLength > MAX_UINT8 - sizeof (EFI_BOOT_SCRIPT_INFORMATION)) {
     1781    return RETURN_OUT_OF_RESOURCES;
     1782  }
    17241783  Length = (UINT8)(sizeof (EFI_BOOT_SCRIPT_INFORMATION) + InformationLength);
    17251784
     
    21812240  EFI_BOOT_SCRIPT_INFORMATION  ScriptInformation;
    21822241
     2242  //
     2243  // Truncation check
     2244  //
     2245  if (InformationLength > MAX_UINT8 - sizeof (EFI_BOOT_SCRIPT_INFORMATION)) {
     2246    return RETURN_OUT_OF_RESOURCES;
     2247  }
    21832248  Length = (UINT8)(sizeof (EFI_BOOT_SCRIPT_INFORMATION) + InformationLength);
    21842249
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette