VirtualBox

Ignore:
Timestamp:
Mar 31, 2025 11:31:09 AM (2 weeks ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
168237
Message:

Devices/EFI/FirmwareNew: Merge edk2-stable202502 from the vendor branch and make it build for the important platforms, 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/ShellPkg/Library/UefiShellDriver1CommandsLib/DrvDiag.c

    r101291 r108794  
    109109    ControllerHandleList = AllocateZeroPool (2*sizeof (EFI_HANDLE));
    110110    if (ControllerHandleList == NULL) {
    111       SHELL_FREE_NON_NULL (DriverHandleList);
    112       return EFI_OUT_OF_RESOURCES;
     111      Status2 = EFI_OUT_OF_RESOURCES;
     112      goto Done;
    113113    }
    114114
     
    122122    ChildHandleList = AllocateZeroPool (2*sizeof (EFI_HANDLE));
    123123    if (ChildHandleList == NULL) {
    124       SHELL_FREE_NON_NULL (ControllerHandleList);
    125       SHELL_FREE_NON_NULL (DriverHandleList);
    126       return EFI_OUT_OF_RESOURCES;
     124      Status2 = EFI_OUT_OF_RESOURCES;
     125      goto Done;
    127126    }
    128127
     
    155154    }
    156155
    157     if (ControllerHandleListCount == 0) {
     156    if ((ControllerHandleListCount == 0) || (ControllerHandleList == NULL)) {
    158157      if (Mode == TestModeList) {
    159158        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DRVDIAG_DRIVER_NO_HANDLES), gShellDriver1HiiHandle);
     
    200199              if (!EFI_ERROR (Status) && (DriverDiagnostics2 != NULL)) {
    201200                Language = GetBestLanguageForDriver (DriverDiagnostics2->SupportedLanguages, Lang, FALSE);
    202                 Found    = TRUE;
    203                 Status   = DriverDiagnostics2->RunDiagnostics (
    204                                                  DriverDiagnostics2,
    205                                                  ControllerHandleList[ControllerHandleListLoop],
    206                                                  ChildHandleList == NULL ? NULL : ChildHandleList[ChildHandleListLoop],
    207                                                  (EFI_DRIVER_DIAGNOSTIC_TYPE)Mode,
    208                                                  Language,
    209                                                  &ErrorType,
    210                                                  &OutBufferSize,
    211                                                  &OutBuffer
    212                                                  );
     201                if (Language == NULL) {
     202                  Status2 = EFI_NOT_FOUND;
     203                  goto Done;
     204                }
     205
     206                Found  = TRUE;
     207                Status = DriverDiagnostics2->RunDiagnostics (
     208                                               DriverDiagnostics2,
     209                                               ControllerHandleList[ControllerHandleListLoop],
     210                                               ChildHandleList == NULL ? NULL : ChildHandleList[ChildHandleListLoop],
     211                                               (EFI_DRIVER_DIAGNOSTIC_TYPE)Mode,
     212                                               Language,
     213                                               &ErrorType,
     214                                               &OutBufferSize,
     215                                               &OutBuffer
     216                                               );
    213217                FreePool (Language);
     218                Language = NULL;
    214219              }
    215220            }
     
    226231              if (!EFI_ERROR (Status)) {
    227232                Language = GetBestLanguageForDriver (DriverDiagnostics->SupportedLanguages, Lang, FALSE);
    228                 Status   = DriverDiagnostics->RunDiagnostics (
    229                                                 DriverDiagnostics,
    230                                                 ControllerHandleList[ControllerHandleListLoop],
    231                                                 ChildHandleList == NULL ? NULL : ChildHandleList[ChildHandleListLoop],
    232                                                 (EFI_DRIVER_DIAGNOSTIC_TYPE)Mode,
    233                                                 Language,
    234                                                 &ErrorType,
    235                                                 &OutBufferSize,
    236                                                 &OutBuffer
    237                                                 );
     233                if (Language == NULL) {
     234                  Status2 = EFI_NOT_FOUND;
     235                  goto Done;
     236                }
     237
     238                Status = DriverDiagnostics->RunDiagnostics (
     239                                              DriverDiagnostics,
     240                                              ControllerHandleList[ControllerHandleListLoop],
     241                                              ChildHandleList == NULL ? NULL : ChildHandleList[ChildHandleListLoop],
     242                                              (EFI_DRIVER_DIAGNOSTIC_TYPE)Mode,
     243                                              Language,
     244                                              &ErrorType,
     245                                              &OutBufferSize,
     246                                              &OutBuffer
     247                                              );
    238248                FreePool (Language);
     249                Language = NULL;
    239250              }
    240251            }
     
    308319  }
    309320
    310   if (DriverHandleList != NULL) {
    311     FreePool (DriverHandleList);
    312   }
    313 
    314   if (ControllerHandleList != NULL) {
    315     FreePool (ControllerHandleList);
    316   }
    317 
    318   if (ChildHandleList != NULL) {
    319     FreePool (ChildHandleList);
    320   }
     321Done:
     322
     323  SHELL_FREE_NON_NULL (DriverHandleList);
     324  SHELL_FREE_NON_NULL (ControllerHandleList);
     325  SHELL_FREE_NON_NULL (ChildHandleList);
     326  SHELL_FREE_NON_NULL (Language);
     327  SHELL_FREE_NON_NULL (OutBuffer);
    321328
    322329  return (Status2);
     
    432439    } else if (Lang != NULL) {
    433440      Language = AllocateZeroPool (StrSize (Lang));
     441      if (Language == NULL) {
     442        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_OUT_MEM), gShellDriver1HiiHandle, L"drvdiag");
     443        ShellCommandLineFreeVarList (Package);
     444        return (SHELL_OUT_OF_RESOURCES);
     445      }
     446
    434447      AsciiSPrint (Language, StrSize (Lang), "%S", Lang);
    435448    }
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