MdePkg: CodeQL Fixes.

Includes changes across the repo for the following CodeQL rules:
- cpp/comparison-with-wider-type
- cpp/overflow-buffer
- cpp/redundant-null-check-param
- cpp/uselesstest

Co-authored-by: Taylor Beebe <tabeebe@microsoft.com>
Co-authored-by: kenlautner <85201046+kenlautner@users.noreply.github.com>

Signed-off-by: Aaron Pop <aaronpop@microsoft.com>
This commit is contained in:
Michael Kubacki 2024-07-31 16:10:53 -07:00 committed by mergify[bot]
parent a9901a7748
commit b7735a087a
11 changed files with 460 additions and 196 deletions

View File

@ -714,9 +714,7 @@ typedef struct {
UINT16 DpaControl; UINT16 DpaControl;
UINT8 DpaPowerAllocationArray[1]; UINT8 DpaPowerAllocationArray[1];
} PCI_EXPRESS_EXTENDED_CAPABILITIES_DYNAMIC_POWER_ALLOCATION; } PCI_EXPRESS_EXTENDED_CAPABILITIES_DYNAMIC_POWER_ALLOCATION;
#define PCI_EXPRESS_EXTENDED_CAPABILITY_DYNAMIC_POWER_ALLOCATION_GET_SUBSTATE_MAX(POWER) (UINT32)(((POWER->DpaCapability)&0x0000000F))
#define PCI_EXPRESS_EXTENDED_CAPABILITY_DYNAMIC_POWER_ALLOCATION_GET_SUBSTATE_MAX(POWER) (UINT16)(((POWER->DpaCapability)&0x0000000F))
#define PCI_EXPRESS_EXTENDED_CAPABILITY_LATENCE_TOLERANCE_REPORTING_ID 0x0018 #define PCI_EXPRESS_EXTENDED_CAPABILITY_LATENCE_TOLERANCE_REPORTING_ID 0x0018
#define PCI_EXPRESS_EXTENDED_CAPABILITY_LATENCE_TOLERANCE_REPORTING_VER1 0x1 #define PCI_EXPRESS_EXTENDED_CAPABILITY_LATENCE_TOLERANCE_REPORTING_VER1 0x1

View File

@ -406,10 +406,12 @@ StrDecimalToUintn (
IN CONST CHAR16 *String IN CONST CHAR16 *String
) )
{ {
UINTN Result; UINTN Result;
RETURN_STATUS Status;
if (RETURN_ERROR (StrDecimalToUintnS (String, (CHAR16 **)NULL, &Result))) { Status = StrDecimalToUintnS (String, (CHAR16 **)NULL, &Result);
return MAX_UINTN; if (Status == RETURN_INVALID_PARAMETER) {
Result = 0;
} }
return Result; return Result;
@ -455,10 +457,12 @@ StrDecimalToUint64 (
IN CONST CHAR16 *String IN CONST CHAR16 *String
) )
{ {
UINT64 Result; UINT64 Result;
RETURN_STATUS Status;
if (RETURN_ERROR (StrDecimalToUint64S (String, (CHAR16 **)NULL, &Result))) { Status = StrDecimalToUint64S (String, (CHAR16 **)NULL, &Result);
return MAX_UINT64; if (Status == RETURN_INVALID_PARAMETER) {
Result = 0;
} }
return Result; return Result;
@ -505,10 +509,12 @@ StrHexToUintn (
IN CONST CHAR16 *String IN CONST CHAR16 *String
) )
{ {
UINTN Result; UINTN Result;
RETURN_STATUS Status;
if (RETURN_ERROR (StrHexToUintnS (String, (CHAR16 **)NULL, &Result))) { Status = StrHexToUintnS (String, (CHAR16 **)NULL, &Result);
return MAX_UINTN; if (Status == RETURN_INVALID_PARAMETER) {
Result = 0;
} }
return Result; return Result;
@ -555,10 +561,12 @@ StrHexToUint64 (
IN CONST CHAR16 *String IN CONST CHAR16 *String
) )
{ {
UINT64 Result; UINT64 Result;
RETURN_STATUS Status;
if (RETURN_ERROR (StrHexToUint64S (String, (CHAR16 **)NULL, &Result))) { Status = StrHexToUint64S (String, (CHAR16 **)NULL, &Result);
return MAX_UINT64; if (Status == RETURN_INVALID_PARAMETER) {
Result = 0;
} }
return Result; return Result;
@ -999,10 +1007,12 @@ AsciiStrDecimalToUintn (
IN CONST CHAR8 *String IN CONST CHAR8 *String
) )
{ {
UINTN Result; UINTN Result;
RETURN_STATUS Status;
if (RETURN_ERROR (AsciiStrDecimalToUintnS (String, (CHAR8 **)NULL, &Result))) { Status = AsciiStrDecimalToUintnS (String, (CHAR8 **)NULL, &Result);
return MAX_UINTN; if (Status == RETURN_INVALID_PARAMETER) {
Result = 0;
} }
return Result; return Result;
@ -1044,10 +1054,12 @@ AsciiStrDecimalToUint64 (
IN CONST CHAR8 *String IN CONST CHAR8 *String
) )
{ {
UINT64 Result; UINT64 Result;
RETURN_STATUS Status;
if (RETURN_ERROR (AsciiStrDecimalToUint64S (String, (CHAR8 **)NULL, &Result))) { Status = AsciiStrDecimalToUint64S (String, (CHAR8 **)NULL, &Result);
return MAX_UINT64; if (Status == RETURN_INVALID_PARAMETER) {
Result = 0;
} }
return Result; return Result;
@ -1093,10 +1105,12 @@ AsciiStrHexToUintn (
IN CONST CHAR8 *String IN CONST CHAR8 *String
) )
{ {
UINTN Result; UINTN Result;
RETURN_STATUS Status;
if (RETURN_ERROR (AsciiStrHexToUintnS (String, (CHAR8 **)NULL, &Result))) { Status = AsciiStrHexToUintnS (String, (CHAR8 **)NULL, &Result);
return MAX_UINTN; if (Status == RETURN_INVALID_PARAMETER) {
Result = 0;
} }
return Result; return Result;
@ -1142,10 +1156,12 @@ AsciiStrHexToUint64 (
IN CONST CHAR8 *String IN CONST CHAR8 *String
) )
{ {
UINT64 Result; UINT64 Result;
RETURN_STATUS Status;
if (RETURN_ERROR (AsciiStrHexToUint64S (String, (CHAR8 **)NULL, &Result))) { Status = AsciiStrHexToUint64S (String, (CHAR8 **)NULL, &Result);
return MAX_UINT64; if (Status == RETURN_INVALID_PARAMETER) {
Result = 0;
} }
return Result; return Result;

View File

@ -68,7 +68,7 @@ PeCoffLoaderGetPeHeader (
UINTN Size; UINTN Size;
UINTN ReadSize; UINTN ReadSize;
UINT32 SectionHeaderOffset; UINT32 SectionHeaderOffset;
UINT32 Index; UINTN Index;
UINT32 HeaderWithoutDataDir; UINT32 HeaderWithoutDataDir;
CHAR8 BufferData; CHAR8 BufferData;
UINTN NumberOfSections; UINTN NumberOfSections;
@ -1407,7 +1407,7 @@ PeCoffLoaderLoadImage (
return RETURN_LOAD_ERROR; return RETURN_LOAD_ERROR;
} }
if (Section->SizeOfRawData > 0) { if ((Section->SizeOfRawData > 0) && (Base != NULL)) {
Status = ImageContext->ImageRead ( Status = ImageContext->ImageRead (
ImageContext->Handle, ImageContext->Handle,
Section->PointerToRawData - TeStrippedOffset, Section->PointerToRawData - TeStrippedOffset,
@ -1424,7 +1424,7 @@ PeCoffLoaderLoadImage (
// If raw size is less then virtual size, zero fill the remaining // If raw size is less then virtual size, zero fill the remaining
// //
if (Size < Section->Misc.VirtualSize) { if ((Size < Section->Misc.VirtualSize) && (Base != NULL)) {
ZeroMem (Base + Size, Section->Misc.VirtualSize - Size); ZeroMem (Base + Size, Section->Misc.VirtualSize - Size);
} }

View File

@ -685,7 +685,11 @@ InternalPeiServicesInstallFvInfoPpi (
} }
FvInfoPpiDescriptor = AllocatePool (sizeof (EFI_PEI_PPI_DESCRIPTOR)); FvInfoPpiDescriptor = AllocatePool (sizeof (EFI_PEI_PPI_DESCRIPTOR));
ASSERT (FvInfoPpiDescriptor != NULL); if (FvInfoPpiDescriptor == NULL) {
ASSERT (FvInfoPpiDescriptor != NULL);
// Need to return here, FV may not be published, but we are out of resources anyway...
return;
}
FvInfoPpiDescriptor->Guid = PpiGuid; FvInfoPpiDescriptor->Guid = PpiGuid;
FvInfoPpiDescriptor->Flags = EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST; FvInfoPpiDescriptor->Flags = EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST;

View File

@ -269,14 +269,14 @@ IsHexStr (
// //
// skip preceeding white space // skip preceeding white space
// //
while ((*Str != 0) && *Str == L' ') { while (*Str == L' ') {
Str++; Str++;
} }
// //
// skip preceeding zeros // skip preceeding zeros
// //
while ((*Str != 0) && *Str == L'0') { while (*Str == L'0') {
Str++; Str++;
} }
@ -388,7 +388,10 @@ DevPathFromTextGenericPath (
(UINT16)(sizeof (EFI_DEVICE_PATH_PROTOCOL) + DataLength) (UINT16)(sizeof (EFI_DEVICE_PATH_PROTOCOL) + DataLength)
); );
StrHexToBytes (DataStr, DataLength * 2, (UINT8 *)(Node + 1), DataLength); if (Node != NULL) {
StrHexToBytes (DataStr, DataLength * 2, (UINT8 *)(Node + 1), DataLength);
}
return Node; return Node;
} }
@ -453,8 +456,10 @@ DevPathFromTextPci (
(UINT16)sizeof (PCI_DEVICE_PATH) (UINT16)sizeof (PCI_DEVICE_PATH)
); );
Pci->Function = (UINT8)Strtoi (FunctionStr); if (Pci != NULL) {
Pci->Device = (UINT8)Strtoi (DeviceStr); Pci->Function = (UINT8)Strtoi (FunctionStr);
Pci->Device = (UINT8)Strtoi (DeviceStr);
}
return (EFI_DEVICE_PATH_PROTOCOL *)Pci; return (EFI_DEVICE_PATH_PROTOCOL *)Pci;
} }
@ -482,7 +487,9 @@ DevPathFromTextPcCard (
(UINT16)sizeof (PCCARD_DEVICE_PATH) (UINT16)sizeof (PCCARD_DEVICE_PATH)
); );
Pccard->FunctionNumber = (UINT8)Strtoi (FunctionNumberStr); if (Pccard != NULL) {
Pccard->FunctionNumber = (UINT8)Strtoi (FunctionNumberStr);
}
return (EFI_DEVICE_PATH_PROTOCOL *)Pccard; return (EFI_DEVICE_PATH_PROTOCOL *)Pccard;
} }
@ -514,9 +521,11 @@ DevPathFromTextMemoryMapped (
(UINT16)sizeof (MEMMAP_DEVICE_PATH) (UINT16)sizeof (MEMMAP_DEVICE_PATH)
); );
MemMap->MemoryType = (UINT32)Strtoi (MemoryTypeStr); if (MemMap != NULL) {
Strtoi64 (StartingAddressStr, &MemMap->StartingAddress); MemMap->MemoryType = (UINT32)Strtoi (MemoryTypeStr);
Strtoi64 (EndingAddressStr, &MemMap->EndingAddress); Strtoi64 (StartingAddressStr, &MemMap->StartingAddress);
Strtoi64 (EndingAddressStr, &MemMap->EndingAddress);
}
return (EFI_DEVICE_PATH_PROTOCOL *)MemMap; return (EFI_DEVICE_PATH_PROTOCOL *)MemMap;
} }
@ -559,8 +568,10 @@ ConvertFromTextVendor (
(UINT16)(sizeof (VENDOR_DEVICE_PATH) + Length) (UINT16)(sizeof (VENDOR_DEVICE_PATH) + Length)
); );
StrToGuid (GuidStr, &Vendor->Guid); if (Vendor != NULL) {
StrHexToBytes (DataStr, Length * 2, (UINT8 *)(Vendor + 1), Length); StrToGuid (GuidStr, &Vendor->Guid);
StrHexToBytes (DataStr, Length * 2, (UINT8 *)(Vendor + 1), Length);
}
return (EFI_DEVICE_PATH_PROTOCOL *)Vendor; return (EFI_DEVICE_PATH_PROTOCOL *)Vendor;
} }
@ -607,7 +618,10 @@ DevPathFromTextCtrl (
HW_CONTROLLER_DP, HW_CONTROLLER_DP,
(UINT16)sizeof (CONTROLLER_DEVICE_PATH) (UINT16)sizeof (CONTROLLER_DEVICE_PATH)
); );
Controller->ControllerNumber = (UINT32)Strtoi (ControllerStr);
if (Controller != NULL) {
Controller->ControllerNumber = (UINT32)Strtoi (ControllerStr);
}
return (EFI_DEVICE_PATH_PROTOCOL *)Controller; return (EFI_DEVICE_PATH_PROTOCOL *)Controller;
} }
@ -637,11 +651,13 @@ DevPathFromTextBmc (
(UINT16)sizeof (BMC_DEVICE_PATH) (UINT16)sizeof (BMC_DEVICE_PATH)
); );
BmcDp->InterfaceType = (UINT8)Strtoi (InterfaceTypeStr); if (BmcDp != NULL) {
WriteUnaligned64 ( BmcDp->InterfaceType = (UINT8)Strtoi (InterfaceTypeStr);
(UINT64 *)(&BmcDp->BaseAddress), WriteUnaligned64 (
StrHexToUint64 (BaseAddressStr) (UINT64 *)(&BmcDp->BaseAddress),
); StrHexToUint64 (BaseAddressStr)
);
}
return (EFI_DEVICE_PATH_PROTOCOL *)BmcDp; return (EFI_DEVICE_PATH_PROTOCOL *)BmcDp;
} }
@ -706,8 +722,10 @@ DevPathFromTextAcpi (
(UINT16)sizeof (ACPI_HID_DEVICE_PATH) (UINT16)sizeof (ACPI_HID_DEVICE_PATH)
); );
Acpi->HID = EisaIdFromText (HIDStr); if (Acpi != NULL) {
Acpi->UID = (UINT32)Strtoi (UIDStr); Acpi->HID = EisaIdFromText (HIDStr);
Acpi->UID = (UINT32)Strtoi (UIDStr);
}
return (EFI_DEVICE_PATH_PROTOCOL *)Acpi; return (EFI_DEVICE_PATH_PROTOCOL *)Acpi;
} }
@ -737,8 +755,10 @@ ConvertFromTextAcpi (
(UINT16)sizeof (ACPI_HID_DEVICE_PATH) (UINT16)sizeof (ACPI_HID_DEVICE_PATH)
); );
Acpi->HID = EFI_PNP_ID (PnPId); if (Acpi != NULL) {
Acpi->UID = (UINT32)Strtoi (UIDStr); Acpi->HID = EFI_PNP_ID (PnPId);
Acpi->UID = (UINT32)Strtoi (UIDStr);
}
return (EFI_DEVICE_PATH_PROTOCOL *)Acpi; return (EFI_DEVICE_PATH_PROTOCOL *)Acpi;
} }
@ -878,14 +898,16 @@ DevPathFromTextAcpiEx (
Length Length
); );
AcpiEx->HID = EisaIdFromText (HIDStr); if (AcpiEx != NULL) {
AcpiEx->CID = EisaIdFromText (CIDStr); AcpiEx->HID = EisaIdFromText (HIDStr);
AcpiEx->UID = (UINT32)Strtoi (UIDStr); AcpiEx->CID = EisaIdFromText (CIDStr);
AcpiEx->UID = (UINT32)Strtoi (UIDStr);
AsciiStr = (CHAR8 *)((UINT8 *)AcpiEx + sizeof (ACPI_EXTENDED_HID_DEVICE_PATH)); AsciiStr = (CHAR8 *)((UINT8 *)AcpiEx + sizeof (ACPI_EXTENDED_HID_DEVICE_PATH));
StrToAscii (HIDSTRStr, &AsciiStr); StrToAscii (HIDSTRStr, &AsciiStr);
StrToAscii (UIDSTRStr, &AsciiStr); StrToAscii (UIDSTRStr, &AsciiStr);
StrToAscii (CIDSTRStr, &AsciiStr); StrToAscii (CIDSTRStr, &AsciiStr);
}
return (EFI_DEVICE_PATH_PROTOCOL *)AcpiEx; return (EFI_DEVICE_PATH_PROTOCOL *)AcpiEx;
} }
@ -920,6 +942,10 @@ DevPathFromTextAcpiExp (
Length Length
); );
if (AcpiEx == NULL) {
return (EFI_DEVICE_PATH_PROTOCOL *)AcpiEx;
}
AcpiEx->HID = EisaIdFromText (HIDStr); AcpiEx->HID = EisaIdFromText (HIDStr);
// //
// According to UEFI spec, the CID parameter is optional and has a default value of 0. // According to UEFI spec, the CID parameter is optional and has a default value of 0.
@ -975,7 +1001,10 @@ DevPathFromTextAcpiAdr (
ACPI_ADR_DP, ACPI_ADR_DP,
(UINT16)sizeof (ACPI_ADR_DEVICE_PATH) (UINT16)sizeof (ACPI_ADR_DEVICE_PATH)
); );
ASSERT (AcpiAdr != NULL); if (AcpiAdr == NULL) {
ASSERT (AcpiAdr != NULL);
return (EFI_DEVICE_PATH_PROTOCOL *)AcpiAdr;
}
for (Index = 0; ; Index++) { for (Index = 0; ; Index++) {
DisplayDeviceStr = GetNextParamStr (&TextDeviceNode); DisplayDeviceStr = GetNextParamStr (&TextDeviceNode);
@ -990,7 +1019,12 @@ DevPathFromTextAcpiAdr (
Length + sizeof (UINT32), Length + sizeof (UINT32),
AcpiAdr AcpiAdr
); );
ASSERT (AcpiAdr != NULL);
if (AcpiAdr == NULL) {
ASSERT (AcpiAdr != NULL);
return (EFI_DEVICE_PATH_PROTOCOL *)AcpiAdr;
}
SetDevicePathNodeLength (AcpiAdr, Length + sizeof (UINT32)); SetDevicePathNodeLength (AcpiAdr, Length + sizeof (UINT32));
} }
@ -1040,6 +1074,10 @@ DevPathFromTextAta (
(UINT16)sizeof (ATAPI_DEVICE_PATH) (UINT16)sizeof (ATAPI_DEVICE_PATH)
); );
if (Atapi == NULL) {
return (EFI_DEVICE_PATH_PROTOCOL *)Atapi;
}
PrimarySecondaryStr = GetNextParamStr (&TextDeviceNode); PrimarySecondaryStr = GetNextParamStr (&TextDeviceNode);
SlaveMasterStr = GetNextParamStr (&TextDeviceNode); SlaveMasterStr = GetNextParamStr (&TextDeviceNode);
LunStr = GetNextParamStr (&TextDeviceNode); LunStr = GetNextParamStr (&TextDeviceNode);
@ -1090,8 +1128,10 @@ DevPathFromTextScsi (
(UINT16)sizeof (SCSI_DEVICE_PATH) (UINT16)sizeof (SCSI_DEVICE_PATH)
); );
Scsi->Pun = (UINT16)Strtoi (PunStr); if (Scsi != NULL) {
Scsi->Lun = (UINT16)Strtoi (LunStr); Scsi->Pun = (UINT16)Strtoi (PunStr);
Scsi->Lun = (UINT16)Strtoi (LunStr);
}
return (EFI_DEVICE_PATH_PROTOCOL *)Scsi; return (EFI_DEVICE_PATH_PROTOCOL *)Scsi;
} }
@ -1121,9 +1161,11 @@ DevPathFromTextFibre (
(UINT16)sizeof (FIBRECHANNEL_DEVICE_PATH) (UINT16)sizeof (FIBRECHANNEL_DEVICE_PATH)
); );
Fibre->Reserved = 0; if (Fibre != NULL) {
Strtoi64 (WWNStr, &Fibre->WWN); Fibre->Reserved = 0;
Strtoi64 (LunStr, &Fibre->Lun); Strtoi64 (WWNStr, &Fibre->WWN);
Strtoi64 (LunStr, &Fibre->Lun);
}
return (EFI_DEVICE_PATH_PROTOCOL *)Fibre; return (EFI_DEVICE_PATH_PROTOCOL *)Fibre;
} }
@ -1153,12 +1195,14 @@ DevPathFromTextFibreEx (
(UINT16)sizeof (FIBRECHANNELEX_DEVICE_PATH) (UINT16)sizeof (FIBRECHANNELEX_DEVICE_PATH)
); );
FibreEx->Reserved = 0; if (FibreEx != NULL) {
Strtoi64 (WWNStr, (UINT64 *)(&FibreEx->WWN)); FibreEx->Reserved = 0;
Strtoi64 (LunStr, (UINT64 *)(&FibreEx->Lun)); Strtoi64 (WWNStr, (UINT64 *)(&FibreEx->WWN));
Strtoi64 (LunStr, (UINT64 *)(&FibreEx->Lun));
*(UINT64 *)(&FibreEx->WWN) = SwapBytes64 (*(UINT64 *)(&FibreEx->WWN)); *(UINT64 *)(&FibreEx->WWN) = SwapBytes64 (*(UINT64 *)(&FibreEx->WWN));
*(UINT64 *)(&FibreEx->Lun) = SwapBytes64 (*(UINT64 *)(&FibreEx->Lun)); *(UINT64 *)(&FibreEx->Lun) = SwapBytes64 (*(UINT64 *)(&FibreEx->Lun));
}
return (EFI_DEVICE_PATH_PROTOCOL *)FibreEx; return (EFI_DEVICE_PATH_PROTOCOL *)FibreEx;
} }
@ -1186,8 +1230,10 @@ DevPathFromText1394 (
(UINT16)sizeof (F1394_DEVICE_PATH) (UINT16)sizeof (F1394_DEVICE_PATH)
); );
F1394DevPath->Reserved = 0; if (F1394DevPath != NULL) {
F1394DevPath->Guid = StrHexToUint64 (GuidStr); F1394DevPath->Reserved = 0;
F1394DevPath->Guid = StrHexToUint64 (GuidStr);
}
return (EFI_DEVICE_PATH_PROTOCOL *)F1394DevPath; return (EFI_DEVICE_PATH_PROTOCOL *)F1394DevPath;
} }
@ -1217,8 +1263,10 @@ DevPathFromTextUsb (
(UINT16)sizeof (USB_DEVICE_PATH) (UINT16)sizeof (USB_DEVICE_PATH)
); );
Usb->ParentPortNumber = (UINT8)Strtoi (PortStr); if (Usb != NULL) {
Usb->InterfaceNumber = (UINT8)Strtoi (InterfaceStr); Usb->ParentPortNumber = (UINT8)Strtoi (PortStr);
Usb->InterfaceNumber = (UINT8)Strtoi (InterfaceStr);
}
return (EFI_DEVICE_PATH_PROTOCOL *)Usb; return (EFI_DEVICE_PATH_PROTOCOL *)Usb;
} }
@ -1246,7 +1294,9 @@ DevPathFromTextI2O (
(UINT16)sizeof (I2O_DEVICE_PATH) (UINT16)sizeof (I2O_DEVICE_PATH)
); );
I2ODevPath->Tid = (UINT32)Strtoi (TIDStr); if (I2ODevPath != NULL) {
I2ODevPath->Tid = (UINT32)Strtoi (TIDStr);
}
return (EFI_DEVICE_PATH_PROTOCOL *)I2ODevPath; return (EFI_DEVICE_PATH_PROTOCOL *)I2ODevPath;
} }
@ -1282,11 +1332,13 @@ DevPathFromTextInfiniband (
(UINT16)sizeof (INFINIBAND_DEVICE_PATH) (UINT16)sizeof (INFINIBAND_DEVICE_PATH)
); );
InfiniBand->ResourceFlags = (UINT32)Strtoi (FlagsStr); if (InfiniBand != NULL) {
StrToGuid (GuidStr, (EFI_GUID *)InfiniBand->PortGid); InfiniBand->ResourceFlags = (UINT32)Strtoi (FlagsStr);
Strtoi64 (SidStr, &InfiniBand->ServiceId); StrToGuid (GuidStr, (EFI_GUID *)InfiniBand->PortGid);
Strtoi64 (TidStr, &InfiniBand->TargetPortId); Strtoi64 (SidStr, &InfiniBand->ServiceId);
Strtoi64 (DidStr, &InfiniBand->DeviceId); Strtoi64 (TidStr, &InfiniBand->TargetPortId);
Strtoi64 (DidStr, &InfiniBand->DeviceId);
}
return (EFI_DEVICE_PATH_PROTOCOL *)InfiniBand; return (EFI_DEVICE_PATH_PROTOCOL *)InfiniBand;
} }
@ -1331,7 +1383,10 @@ DevPathFromTextVenPcAnsi (
MSG_VENDOR_DP, MSG_VENDOR_DP,
(UINT16)sizeof (VENDOR_DEVICE_PATH) (UINT16)sizeof (VENDOR_DEVICE_PATH)
); );
CopyGuid (&Vendor->Guid, &gEfiPcAnsiGuid);
if (Vendor != NULL) {
CopyGuid (&Vendor->Guid, &gEfiPcAnsiGuid);
}
return (EFI_DEVICE_PATH_PROTOCOL *)Vendor; return (EFI_DEVICE_PATH_PROTOCOL *)Vendor;
} }
@ -1356,7 +1411,10 @@ DevPathFromTextVenVt100 (
MSG_VENDOR_DP, MSG_VENDOR_DP,
(UINT16)sizeof (VENDOR_DEVICE_PATH) (UINT16)sizeof (VENDOR_DEVICE_PATH)
); );
CopyGuid (&Vendor->Guid, &gEfiVT100Guid);
if (Vendor != NULL) {
CopyGuid (&Vendor->Guid, &gEfiVT100Guid);
}
return (EFI_DEVICE_PATH_PROTOCOL *)Vendor; return (EFI_DEVICE_PATH_PROTOCOL *)Vendor;
} }
@ -1381,7 +1439,10 @@ DevPathFromTextVenVt100Plus (
MSG_VENDOR_DP, MSG_VENDOR_DP,
(UINT16)sizeof (VENDOR_DEVICE_PATH) (UINT16)sizeof (VENDOR_DEVICE_PATH)
); );
CopyGuid (&Vendor->Guid, &gEfiVT100PlusGuid);
if (Vendor != NULL) {
CopyGuid (&Vendor->Guid, &gEfiVT100PlusGuid);
}
return (EFI_DEVICE_PATH_PROTOCOL *)Vendor; return (EFI_DEVICE_PATH_PROTOCOL *)Vendor;
} }
@ -1406,7 +1467,10 @@ DevPathFromTextVenUtf8 (
MSG_VENDOR_DP, MSG_VENDOR_DP,
(UINT16)sizeof (VENDOR_DEVICE_PATH) (UINT16)sizeof (VENDOR_DEVICE_PATH)
); );
CopyGuid (&Vendor->Guid, &gEfiVTUTF8Guid);
if (Vendor != NULL) {
CopyGuid (&Vendor->Guid, &gEfiVTUTF8Guid);
}
return (EFI_DEVICE_PATH_PROTOCOL *)Vendor; return (EFI_DEVICE_PATH_PROTOCOL *)Vendor;
} }
@ -1434,13 +1498,15 @@ DevPathFromTextUartFlowCtrl (
(UINT16)sizeof (UART_FLOW_CONTROL_DEVICE_PATH) (UINT16)sizeof (UART_FLOW_CONTROL_DEVICE_PATH)
); );
CopyGuid (&UartFlowControl->Guid, &gEfiUartDevicePathGuid); if (UartFlowControl != NULL) {
if (StrCmp (ValueStr, L"XonXoff") == 0) { CopyGuid (&UartFlowControl->Guid, &gEfiUartDevicePathGuid);
UartFlowControl->FlowControlMap = 2; if (StrCmp (ValueStr, L"XonXoff") == 0) {
} else if (StrCmp (ValueStr, L"Hardware") == 0) { UartFlowControl->FlowControlMap = 2;
UartFlowControl->FlowControlMap = 1; } else if (StrCmp (ValueStr, L"Hardware") == 0) {
} else { UartFlowControl->FlowControlMap = 1;
UartFlowControl->FlowControlMap = 0; } else {
UartFlowControl->FlowControlMap = 0;
}
} }
return (EFI_DEVICE_PATH_PROTOCOL *)UartFlowControl; return (EFI_DEVICE_PATH_PROTOCOL *)UartFlowControl;
@ -1485,6 +1551,10 @@ DevPathFromTextSAS (
(UINT16)sizeof (SAS_DEVICE_PATH) (UINT16)sizeof (SAS_DEVICE_PATH)
); );
if (Sas == NULL) {
return (EFI_DEVICE_PATH_PROTOCOL *)Sas;
}
CopyGuid (&Sas->Guid, &gEfiSasDevicePathGuid); CopyGuid (&Sas->Guid, &gEfiSasDevicePathGuid);
Strtoi64 (AddressStr, &Sas->SasAddress); Strtoi64 (AddressStr, &Sas->SasAddress);
Strtoi64 (LunStr, &Sas->Lun); Strtoi64 (LunStr, &Sas->Lun);
@ -1580,6 +1650,10 @@ DevPathFromTextSasEx (
(UINT16)sizeof (SASEX_DEVICE_PATH) (UINT16)sizeof (SASEX_DEVICE_PATH)
); );
if (SasEx == NULL) {
return (EFI_DEVICE_PATH_PROTOCOL *)SasEx;
}
Strtoi64 (AddressStr, &SasAddress); Strtoi64 (AddressStr, &SasAddress);
Strtoi64 (LunStr, &Lun); Strtoi64 (LunStr, &Lun);
WriteUnaligned64 ((UINT64 *)&SasEx->SasAddress, SwapBytes64 (SasAddress)); WriteUnaligned64 ((UINT64 *)&SasEx->SasAddress, SwapBytes64 (SasAddress));
@ -1663,12 +1737,14 @@ DevPathFromTextNVMe (
(UINT16)sizeof (NVME_NAMESPACE_DEVICE_PATH) (UINT16)sizeof (NVME_NAMESPACE_DEVICE_PATH)
); );
Nvme->NamespaceId = (UINT32)Strtoi (NamespaceIdStr); if (Nvme != NULL) {
Uuid = (UINT8 *)&Nvme->NamespaceUuid; Nvme->NamespaceId = (UINT32)Strtoi (NamespaceIdStr);
Uuid = (UINT8 *)&Nvme->NamespaceUuid;
Index = sizeof (Nvme->NamespaceUuid) / sizeof (UINT8); Index = sizeof (Nvme->NamespaceUuid) / sizeof (UINT8);
while (Index-- != 0) { while (Index-- != 0) {
Uuid[Index] = (UINT8)StrHexToUintn (SplitStr (&NamespaceUuidStr, L'-')); Uuid[Index] = (UINT8)StrHexToUintn (SplitStr (&NamespaceUuidStr, L'-'));
}
} }
return (EFI_DEVICE_PATH_PROTOCOL *)Nvme; return (EFI_DEVICE_PATH_PROTOCOL *)Nvme;
@ -1699,8 +1775,10 @@ DevPathFromTextUfs (
(UINT16)sizeof (UFS_DEVICE_PATH) (UINT16)sizeof (UFS_DEVICE_PATH)
); );
Ufs->Pun = (UINT8)Strtoi (PunStr); if (Ufs != NULL) {
Ufs->Lun = (UINT8)Strtoi (LunStr); Ufs->Pun = (UINT8)Strtoi (PunStr);
Ufs->Lun = (UINT8)Strtoi (LunStr);
}
return (EFI_DEVICE_PATH_PROTOCOL *)Ufs; return (EFI_DEVICE_PATH_PROTOCOL *)Ufs;
} }
@ -1728,7 +1806,9 @@ DevPathFromTextSd (
(UINT16)sizeof (SD_DEVICE_PATH) (UINT16)sizeof (SD_DEVICE_PATH)
); );
Sd->SlotNumber = (UINT8)Strtoi (SlotNumberStr); if (Sd != NULL) {
Sd->SlotNumber = (UINT8)Strtoi (SlotNumberStr);
}
return (EFI_DEVICE_PATH_PROTOCOL *)Sd; return (EFI_DEVICE_PATH_PROTOCOL *)Sd;
} }
@ -1756,7 +1836,9 @@ DevPathFromTextEmmc (
(UINT16)sizeof (EMMC_DEVICE_PATH) (UINT16)sizeof (EMMC_DEVICE_PATH)
); );
Emmc->SlotNumber = (UINT8)Strtoi (SlotNumberStr); if (Emmc != NULL) {
Emmc->SlotNumber = (UINT8)Strtoi (SlotNumberStr);
}
return (EFI_DEVICE_PATH_PROTOCOL *)Emmc; return (EFI_DEVICE_PATH_PROTOCOL *)Emmc;
} }
@ -1782,7 +1864,9 @@ DevPathFromTextDebugPort (
(UINT16)sizeof (VENDOR_DEVICE_PATH) (UINT16)sizeof (VENDOR_DEVICE_PATH)
); );
CopyGuid (&Vend->Guid, &gEfiDebugPortProtocolGuid); if (Vend != NULL) {
CopyGuid (&Vend->Guid, &gEfiDebugPortProtocolGuid);
}
return (EFI_DEVICE_PATH_PROTOCOL *)Vend; return (EFI_DEVICE_PATH_PROTOCOL *)Vend;
} }
@ -1813,15 +1897,17 @@ DevPathFromTextMAC (
(UINT16)sizeof (MAC_ADDR_DEVICE_PATH) (UINT16)sizeof (MAC_ADDR_DEVICE_PATH)
); );
MACDevPath->IfType = (UINT8)Strtoi (IfTypeStr); if (MACDevPath != NULL) {
MACDevPath->IfType = (UINT8)Strtoi (IfTypeStr);
Length = sizeof (EFI_MAC_ADDRESS); Length = sizeof (EFI_MAC_ADDRESS);
if ((MACDevPath->IfType == 0x01) || (MACDevPath->IfType == 0x00)) { if ((MACDevPath->IfType == 0x01) || (MACDevPath->IfType == 0x00)) {
Length = 6; Length = 6;
}
StrHexToBytes (AddressStr, Length * 2, MACDevPath->MacAddress.Addr, Length);
} }
StrHexToBytes (AddressStr, Length * 2, MACDevPath->MacAddress.Addr, Length);
return (EFI_DEVICE_PATH_PROTOCOL *)MACDevPath; return (EFI_DEVICE_PATH_PROTOCOL *)MACDevPath;
} }
@ -1882,6 +1968,10 @@ DevPathFromTextIPv4 (
(UINT16)sizeof (IPv4_DEVICE_PATH) (UINT16)sizeof (IPv4_DEVICE_PATH)
); );
if (IPv4 == NULL) {
return (EFI_DEVICE_PATH_PROTOCOL *)IPv4;
}
StrToIpv4Address (RemoteIPStr, NULL, &IPv4->RemoteIpAddress, NULL); StrToIpv4Address (RemoteIPStr, NULL, &IPv4->RemoteIpAddress, NULL);
IPv4->Protocol = (UINT16)NetworkProtocolFromText (ProtocolStr); IPv4->Protocol = (UINT16)NetworkProtocolFromText (ProtocolStr);
if (StrCmp (TypeStr, L"Static") == 0) { if (StrCmp (TypeStr, L"Static") == 0) {
@ -1938,6 +2028,10 @@ DevPathFromTextIPv6 (
(UINT16)sizeof (IPv6_DEVICE_PATH) (UINT16)sizeof (IPv6_DEVICE_PATH)
); );
if (IPv6 == NULL) {
return (EFI_DEVICE_PATH_PROTOCOL *)IPv6;
}
StrToIpv6Address (RemoteIPStr, NULL, &IPv6->RemoteIpAddress, NULL); StrToIpv6Address (RemoteIPStr, NULL, &IPv6->RemoteIpAddress, NULL);
IPv6->Protocol = (UINT16)NetworkProtocolFromText (ProtocolStr); IPv6->Protocol = (UINT16)NetworkProtocolFromText (ProtocolStr);
if (StrCmp (TypeStr, L"Static") == 0) { if (StrCmp (TypeStr, L"Static") == 0) {
@ -1992,6 +2086,10 @@ DevPathFromTextUart (
(UINT16)sizeof (UART_DEVICE_PATH) (UINT16)sizeof (UART_DEVICE_PATH)
); );
if (Uart == NULL) {
return (EFI_DEVICE_PATH_PROTOCOL *)Uart;
}
if (StrCmp (BaudStr, L"DEFAULT") == 0) { if (StrCmp (BaudStr, L"DEFAULT") == 0) {
Uart->BaudRate = 115200; Uart->BaudRate = 115200;
} else { } else {
@ -2072,6 +2170,10 @@ ConvertFromTextUsbClass (
(UINT16)sizeof (USB_CLASS_DEVICE_PATH) (UINT16)sizeof (USB_CLASS_DEVICE_PATH)
); );
if (UsbClass == NULL) {
return (EFI_DEVICE_PATH_PROTOCOL *)UsbClass;
}
VIDStr = GetNextParamStr (&TextDeviceNode); VIDStr = GetNextParamStr (&TextDeviceNode);
PIDStr = GetNextParamStr (&TextDeviceNode); PIDStr = GetNextParamStr (&TextDeviceNode);
if (UsbClassText->ClassExist) { if (UsbClassText->ClassExist) {
@ -2513,19 +2615,22 @@ DevPathFromTextUsbWwid (
MSG_USB_WWID_DP, MSG_USB_WWID_DP,
(UINT16)(sizeof (USB_WWID_DEVICE_PATH) + SerialNumberStrLen * sizeof (CHAR16)) (UINT16)(sizeof (USB_WWID_DEVICE_PATH) + SerialNumberStrLen * sizeof (CHAR16))
); );
UsbWwid->VendorId = (UINT16)Strtoi (VIDStr);
UsbWwid->ProductId = (UINT16)Strtoi (PIDStr);
UsbWwid->InterfaceNumber = (UINT16)Strtoi (InterfaceNumStr);
// if (UsbWwid != NULL) {
// There is no memory allocated in UsbWwid for the '\0' in SerialNumberStr. UsbWwid->VendorId = (UINT16)Strtoi (VIDStr);
// Therefore, the '\0' will not be copied. UsbWwid->ProductId = (UINT16)Strtoi (PIDStr);
// UsbWwid->InterfaceNumber = (UINT16)Strtoi (InterfaceNumStr);
CopyMem (
(UINT8 *)UsbWwid + sizeof (USB_WWID_DEVICE_PATH), //
SerialNumberStr, // There is no memory allocated in UsbWwid for the '\0' in SerialNumberStr.
SerialNumberStrLen * sizeof (CHAR16) // Therefore, the '\0' will not be copied.
); //
CopyMem (
(UINT8 *)UsbWwid + sizeof (USB_WWID_DEVICE_PATH),
SerialNumberStr,
SerialNumberStrLen * sizeof (CHAR16)
);
}
return (EFI_DEVICE_PATH_PROTOCOL *)UsbWwid; return (EFI_DEVICE_PATH_PROTOCOL *)UsbWwid;
} }
@ -2553,7 +2658,9 @@ DevPathFromTextUnit (
(UINT16)sizeof (DEVICE_LOGICAL_UNIT_DEVICE_PATH) (UINT16)sizeof (DEVICE_LOGICAL_UNIT_DEVICE_PATH)
); );
LogicalUnit->Lun = (UINT8)Strtoi (LunStr); if (LogicalUnit != NULL) {
LogicalUnit->Lun = (UINT8)Strtoi (LunStr);
}
return (EFI_DEVICE_PATH_PROTOCOL *)LogicalUnit; return (EFI_DEVICE_PATH_PROTOCOL *)LogicalUnit;
} }
@ -2596,6 +2703,10 @@ DevPathFromTextiSCSI (
(UINT16)(sizeof (ISCSI_DEVICE_PATH_WITH_NAME) + StrLen (NameStr)) (UINT16)(sizeof (ISCSI_DEVICE_PATH_WITH_NAME) + StrLen (NameStr))
); );
if (ISCSIDevPath == NULL) {
return (EFI_DEVICE_PATH_PROTOCOL *)ISCSIDevPath;
}
AsciiStr = ISCSIDevPath->TargetName; AsciiStr = ISCSIDevPath->TargetName;
StrToAscii (NameStr, &AsciiStr); StrToAscii (NameStr, &AsciiStr);
@ -2657,7 +2768,9 @@ DevPathFromTextVlan (
(UINT16)sizeof (VLAN_DEVICE_PATH) (UINT16)sizeof (VLAN_DEVICE_PATH)
); );
Vlan->VlanId = (UINT16)Strtoi (VlanStr); if (Vlan != NULL) {
Vlan->VlanId = (UINT16)Strtoi (VlanStr);
}
return (EFI_DEVICE_PATH_PROTOCOL *)Vlan; return (EFI_DEVICE_PATH_PROTOCOL *)Vlan;
} }
@ -2684,12 +2797,16 @@ DevPathFromTextBluetooth (
MSG_BLUETOOTH_DP, MSG_BLUETOOTH_DP,
(UINT16)sizeof (BLUETOOTH_DEVICE_PATH) (UINT16)sizeof (BLUETOOTH_DEVICE_PATH)
); );
StrHexToBytes (
BluetoothStr, if (BluetoothDp != NULL) {
sizeof (BLUETOOTH_ADDRESS) * 2, StrHexToBytes (
BluetoothDp->BD_ADDR.Address, BluetoothStr,
sizeof (BLUETOOTH_ADDRESS) sizeof (BLUETOOTH_ADDRESS) * 2,
); BluetoothDp->BD_ADDR.Address,
sizeof (BLUETOOTH_ADDRESS)
);
}
return (EFI_DEVICE_PATH_PROTOCOL *)BluetoothDp; return (EFI_DEVICE_PATH_PROTOCOL *)BluetoothDp;
} }
@ -2718,7 +2835,7 @@ DevPathFromTextWiFi (
(UINT16)sizeof (WIFI_DEVICE_PATH) (UINT16)sizeof (WIFI_DEVICE_PATH)
); );
if (NULL != SSIdStr) { if ((NULL != SSIdStr) && (NULL != WiFiDp)) {
DataLen = StrLen (SSIdStr); DataLen = StrLen (SSIdStr);
if (StrLen (SSIdStr) > 32) { if (StrLen (SSIdStr) > 32) {
SSIdStr[32] = L'\0'; SSIdStr[32] = L'\0';
@ -2757,13 +2874,16 @@ DevPathFromTextBluetoothLE (
(UINT16)sizeof (BLUETOOTH_LE_DEVICE_PATH) (UINT16)sizeof (BLUETOOTH_LE_DEVICE_PATH)
); );
BluetoothLeDp->Address.Type = (UINT8)Strtoi (BluetoothLeAddrTypeStr); if (BluetoothLeDp != NULL) {
StrHexToBytes ( BluetoothLeDp->Address.Type = (UINT8)Strtoi (BluetoothLeAddrTypeStr);
BluetoothLeAddrStr, StrHexToBytes (
sizeof (BluetoothLeDp->Address.Address) * 2, BluetoothLeAddrStr,
BluetoothLeDp->Address.Address, sizeof (BluetoothLeDp->Address.Address) * 2,
sizeof (BluetoothLeDp->Address.Address) BluetoothLeDp->Address.Address,
); sizeof (BluetoothLeDp->Address.Address)
);
}
return (EFI_DEVICE_PATH_PROTOCOL *)BluetoothLeDp; return (EFI_DEVICE_PATH_PROTOCOL *)BluetoothLeDp;
} }
@ -2883,7 +3003,7 @@ DevPathFromTextUri (
(UINT16)(sizeof (URI_DEVICE_PATH) + UriLength) (UINT16)(sizeof (URI_DEVICE_PATH) + UriLength)
); );
while (UriLength-- != 0) { while (Uri != NULL && UriLength-- != 0) {
Uri->Uri[UriLength] = (CHAR8)UriStr[UriLength]; Uri->Uri[UriLength] = (CHAR8)UriStr[UriLength];
} }
@ -2938,6 +3058,10 @@ DevPathFromTextHD (
(UINT16)sizeof (HARDDRIVE_DEVICE_PATH) (UINT16)sizeof (HARDDRIVE_DEVICE_PATH)
); );
if (Hd == NULL) {
return (EFI_DEVICE_PATH_PROTOCOL *)Hd;
}
Hd->PartitionNumber = (UINT32)Strtoi (PartitionStr); Hd->PartitionNumber = (UINT32)Strtoi (PartitionStr);
ZeroMem (Hd->Signature, 16); ZeroMem (Hd->Signature, 16);
@ -2991,9 +3115,11 @@ DevPathFromTextCDROM (
(UINT16)sizeof (CDROM_DEVICE_PATH) (UINT16)sizeof (CDROM_DEVICE_PATH)
); );
CDROMDevPath->BootEntry = (UINT32)Strtoi (EntryStr); if (CDROMDevPath != NULL) {
Strtoi64 (StartStr, &CDROMDevPath->PartitionStart); CDROMDevPath->BootEntry = (UINT32)Strtoi (EntryStr);
Strtoi64 (SizeStr, &CDROMDevPath->PartitionSize); Strtoi64 (StartStr, &CDROMDevPath->PartitionStart);
Strtoi64 (SizeStr, &CDROMDevPath->PartitionSize);
}
return (EFI_DEVICE_PATH_PROTOCOL *)CDROMDevPath; return (EFI_DEVICE_PATH_PROTOCOL *)CDROMDevPath;
} }
@ -3039,7 +3165,9 @@ DevPathFromTextFilePath (
(UINT16)(sizeof (FILEPATH_DEVICE_PATH) + StrLen (TextDeviceNode) * 2) (UINT16)(sizeof (FILEPATH_DEVICE_PATH) + StrLen (TextDeviceNode) * 2)
); );
StrCpyS (File->PathName, StrLen (TextDeviceNode) + 1, TextDeviceNode); if (File != NULL) {
StrCpyS (File->PathName, StrLen (TextDeviceNode) + 1, TextDeviceNode);
}
return (EFI_DEVICE_PATH_PROTOCOL *)File; return (EFI_DEVICE_PATH_PROTOCOL *)File;
} }
@ -3067,7 +3195,9 @@ DevPathFromTextMedia (
(UINT16)sizeof (MEDIA_PROTOCOL_DEVICE_PATH) (UINT16)sizeof (MEDIA_PROTOCOL_DEVICE_PATH)
); );
StrToGuid (GuidStr, &Media->Protocol); if (Media != NULL) {
StrToGuid (GuidStr, &Media->Protocol);
}
return (EFI_DEVICE_PATH_PROTOCOL *)Media; return (EFI_DEVICE_PATH_PROTOCOL *)Media;
} }
@ -3095,7 +3225,9 @@ DevPathFromTextFv (
(UINT16)sizeof (MEDIA_FW_VOL_DEVICE_PATH) (UINT16)sizeof (MEDIA_FW_VOL_DEVICE_PATH)
); );
StrToGuid (GuidStr, &Fv->FvName); if (Fv != NULL) {
StrToGuid (GuidStr, &Fv->FvName);
}
return (EFI_DEVICE_PATH_PROTOCOL *)Fv; return (EFI_DEVICE_PATH_PROTOCOL *)Fv;
} }
@ -3123,7 +3255,9 @@ DevPathFromTextFvFile (
(UINT16)sizeof (MEDIA_FW_VOL_FILEPATH_DEVICE_PATH) (UINT16)sizeof (MEDIA_FW_VOL_FILEPATH_DEVICE_PATH)
); );
StrToGuid (GuidStr, &FvFile->FvFileName); if (FvFile != NULL) {
StrToGuid (GuidStr, &FvFile->FvFileName);
}
return (EFI_DEVICE_PATH_PROTOCOL *)FvFile; return (EFI_DEVICE_PATH_PROTOCOL *)FvFile;
} }
@ -3153,8 +3287,10 @@ DevPathFromTextRelativeOffsetRange (
(UINT16)sizeof (MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH) (UINT16)sizeof (MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH)
); );
Strtoi64 (StartingOffsetStr, &Offset->StartingOffset); if (Offset != NULL) {
Strtoi64 (EndingOffsetStr, &Offset->EndingOffset); Strtoi64 (StartingOffsetStr, &Offset->StartingOffset);
Strtoi64 (EndingOffsetStr, &Offset->EndingOffset);
}
return (EFI_DEVICE_PATH_PROTOCOL *)Offset; return (EFI_DEVICE_PATH_PROTOCOL *)Offset;
} }
@ -3190,12 +3326,14 @@ DevPathFromTextRamDisk (
(UINT16)sizeof (MEDIA_RAM_DISK_DEVICE_PATH) (UINT16)sizeof (MEDIA_RAM_DISK_DEVICE_PATH)
); );
Strtoi64 (StartingAddrStr, &StartingAddr); if (RamDisk != NULL) {
WriteUnaligned64 ((UINT64 *)&(RamDisk->StartingAddr[0]), StartingAddr); Strtoi64 (StartingAddrStr, &StartingAddr);
Strtoi64 (EndingAddrStr, &EndingAddr); WriteUnaligned64 ((UINT64 *)&(RamDisk->StartingAddr[0]), StartingAddr);
WriteUnaligned64 ((UINT64 *)&(RamDisk->EndingAddr[0]), EndingAddr); Strtoi64 (EndingAddrStr, &EndingAddr);
RamDisk->Instance = (UINT16)Strtoi (InstanceStr); WriteUnaligned64 ((UINT64 *)&(RamDisk->EndingAddr[0]), EndingAddr);
StrToGuid (TypeGuidStr, &RamDisk->TypeGuid); RamDisk->Instance = (UINT16)Strtoi (InstanceStr);
StrToGuid (TypeGuidStr, &RamDisk->TypeGuid);
}
return (EFI_DEVICE_PATH_PROTOCOL *)RamDisk; return (EFI_DEVICE_PATH_PROTOCOL *)RamDisk;
} }
@ -3230,12 +3368,14 @@ DevPathFromTextVirtualDisk (
(UINT16)sizeof (MEDIA_RAM_DISK_DEVICE_PATH) (UINT16)sizeof (MEDIA_RAM_DISK_DEVICE_PATH)
); );
Strtoi64 (StartingAddrStr, &StartingAddr); if (RamDisk != NULL) {
WriteUnaligned64 ((UINT64 *)&(RamDisk->StartingAddr[0]), StartingAddr); Strtoi64 (StartingAddrStr, &StartingAddr);
Strtoi64 (EndingAddrStr, &EndingAddr); WriteUnaligned64 ((UINT64 *)&(RamDisk->StartingAddr[0]), StartingAddr);
WriteUnaligned64 ((UINT64 *)&(RamDisk->EndingAddr[0]), EndingAddr); Strtoi64 (EndingAddrStr, &EndingAddr);
RamDisk->Instance = (UINT16)Strtoi (InstanceStr); WriteUnaligned64 ((UINT64 *)&(RamDisk->EndingAddr[0]), EndingAddr);
CopyGuid (&RamDisk->TypeGuid, &gEfiVirtualDiskGuid); RamDisk->Instance = (UINT16)Strtoi (InstanceStr);
CopyGuid (&RamDisk->TypeGuid, &gEfiVirtualDiskGuid);
}
return (EFI_DEVICE_PATH_PROTOCOL *)RamDisk; return (EFI_DEVICE_PATH_PROTOCOL *)RamDisk;
} }
@ -3270,12 +3410,14 @@ DevPathFromTextVirtualCd (
(UINT16)sizeof (MEDIA_RAM_DISK_DEVICE_PATH) (UINT16)sizeof (MEDIA_RAM_DISK_DEVICE_PATH)
); );
Strtoi64 (StartingAddrStr, &StartingAddr); if (RamDisk != NULL) {
WriteUnaligned64 ((UINT64 *)&(RamDisk->StartingAddr[0]), StartingAddr); Strtoi64 (StartingAddrStr, &StartingAddr);
Strtoi64 (EndingAddrStr, &EndingAddr); WriteUnaligned64 ((UINT64 *)&(RamDisk->StartingAddr[0]), StartingAddr);
WriteUnaligned64 ((UINT64 *)&(RamDisk->EndingAddr[0]), EndingAddr); Strtoi64 (EndingAddrStr, &EndingAddr);
RamDisk->Instance = (UINT16)Strtoi (InstanceStr); WriteUnaligned64 ((UINT64 *)&(RamDisk->EndingAddr[0]), EndingAddr);
CopyGuid (&RamDisk->TypeGuid, &gEfiVirtualCdGuid); RamDisk->Instance = (UINT16)Strtoi (InstanceStr);
CopyGuid (&RamDisk->TypeGuid, &gEfiVirtualCdGuid);
}
return (EFI_DEVICE_PATH_PROTOCOL *)RamDisk; return (EFI_DEVICE_PATH_PROTOCOL *)RamDisk;
} }
@ -3310,12 +3452,14 @@ DevPathFromTextPersistentVirtualDisk (
(UINT16)sizeof (MEDIA_RAM_DISK_DEVICE_PATH) (UINT16)sizeof (MEDIA_RAM_DISK_DEVICE_PATH)
); );
Strtoi64 (StartingAddrStr, &StartingAddr); if (RamDisk != NULL) {
WriteUnaligned64 ((UINT64 *)&(RamDisk->StartingAddr[0]), StartingAddr); Strtoi64 (StartingAddrStr, &StartingAddr);
Strtoi64 (EndingAddrStr, &EndingAddr); WriteUnaligned64 ((UINT64 *)&(RamDisk->StartingAddr[0]), StartingAddr);
WriteUnaligned64 ((UINT64 *)&(RamDisk->EndingAddr[0]), EndingAddr); Strtoi64 (EndingAddrStr, &EndingAddr);
RamDisk->Instance = (UINT16)Strtoi (InstanceStr); WriteUnaligned64 ((UINT64 *)&(RamDisk->EndingAddr[0]), EndingAddr);
CopyGuid (&RamDisk->TypeGuid, &gEfiPersistentVirtualDiskGuid); RamDisk->Instance = (UINT16)Strtoi (InstanceStr);
CopyGuid (&RamDisk->TypeGuid, &gEfiPersistentVirtualDiskGuid);
}
return (EFI_DEVICE_PATH_PROTOCOL *)RamDisk; return (EFI_DEVICE_PATH_PROTOCOL *)RamDisk;
} }
@ -3350,12 +3494,14 @@ DevPathFromTextPersistentVirtualCd (
(UINT16)sizeof (MEDIA_RAM_DISK_DEVICE_PATH) (UINT16)sizeof (MEDIA_RAM_DISK_DEVICE_PATH)
); );
Strtoi64 (StartingAddrStr, &StartingAddr); if (RamDisk != NULL) {
WriteUnaligned64 ((UINT64 *)&(RamDisk->StartingAddr[0]), StartingAddr); Strtoi64 (StartingAddrStr, &StartingAddr);
Strtoi64 (EndingAddrStr, &EndingAddr); WriteUnaligned64 ((UINT64 *)&(RamDisk->StartingAddr[0]), StartingAddr);
WriteUnaligned64 ((UINT64 *)&(RamDisk->EndingAddr[0]), EndingAddr); Strtoi64 (EndingAddrStr, &EndingAddr);
RamDisk->Instance = (UINT16)Strtoi (InstanceStr); WriteUnaligned64 ((UINT64 *)&(RamDisk->EndingAddr[0]), EndingAddr);
CopyGuid (&RamDisk->TypeGuid, &gEfiPersistentVirtualCdGuid); RamDisk->Instance = (UINT16)Strtoi (InstanceStr);
CopyGuid (&RamDisk->TypeGuid, &gEfiPersistentVirtualCdGuid);
}
return (EFI_DEVICE_PATH_PROTOCOL *)RamDisk; return (EFI_DEVICE_PATH_PROTOCOL *)RamDisk;
} }
@ -3404,6 +3550,10 @@ DevPathFromTextBBS (
(UINT16)(sizeof (BBS_BBS_DEVICE_PATH) + StrLen (IdStr)) (UINT16)(sizeof (BBS_BBS_DEVICE_PATH) + StrLen (IdStr))
); );
if (Bbs == NULL) {
return (EFI_DEVICE_PATH_PROTOCOL *)Bbs;
}
if (StrCmp (TypeStr, L"Floppy") == 0) { if (StrCmp (TypeStr, L"Floppy") == 0) {
Bbs->DeviceType = BBS_TYPE_FLOPPY; Bbs->DeviceType = BBS_TYPE_FLOPPY;
} else if (StrCmp (TypeStr, L"HD") == 0) { } else if (StrCmp (TypeStr, L"HD") == 0) {
@ -3455,6 +3605,11 @@ DevPathFromTextSata (
MSG_SATA_DP, MSG_SATA_DP,
(UINT16)sizeof (SATA_DEVICE_PATH) (UINT16)sizeof (SATA_DEVICE_PATH)
); );
if (Sata == NULL) {
return (EFI_DEVICE_PATH_PROTOCOL *)Sata;
}
Sata->HBAPortNumber = (UINT16)Strtoi (Param1); Sata->HBAPortNumber = (UINT16)Strtoi (Param1);
// //
@ -3652,29 +3807,54 @@ UefiDevicePathLibConvertTextToDevicePath (
} }
DevicePath = (EFI_DEVICE_PATH_PROTOCOL *)AllocatePool (END_DEVICE_PATH_LENGTH); DevicePath = (EFI_DEVICE_PATH_PROTOCOL *)AllocatePool (END_DEVICE_PATH_LENGTH);
ASSERT (DevicePath != NULL);
if (DevicePath == NULL) {
ASSERT (DevicePath != NULL);
return NULL;
}
SetDevicePathEndNode (DevicePath); SetDevicePathEndNode (DevicePath);
DevicePathStr = UefiDevicePathLibStrDuplicate (TextDevicePath); DevicePathStr = UefiDevicePathLibStrDuplicate (TextDevicePath);
if (DevicePathStr == NULL) {
return NULL;
}
Str = DevicePathStr; Str = DevicePathStr;
while ((DeviceNodeStr = GetNextDeviceNodeStr (&Str, &IsInstanceEnd)) != NULL) { while ((DeviceNodeStr = GetNextDeviceNodeStr (&Str, &IsInstanceEnd)) != NULL) {
DeviceNode = UefiDevicePathLibConvertTextToDeviceNode (DeviceNodeStr); DeviceNode = UefiDevicePathLibConvertTextToDeviceNode (DeviceNodeStr);
NewDevicePath = AppendDevicePathNode (DevicePath, DeviceNode); NewDevicePath = AppendDevicePathNode (DevicePath, DeviceNode);
FreePool (DevicePath); if (DevicePath != NULL) {
FreePool (DeviceNode); FreePool (DevicePath);
}
if (DeviceNode != NULL) {
FreePool (DeviceNode);
}
DevicePath = NewDevicePath; DevicePath = NewDevicePath;
if (IsInstanceEnd) { if (IsInstanceEnd) {
DeviceNode = (EFI_DEVICE_PATH_PROTOCOL *)AllocatePool (END_DEVICE_PATH_LENGTH); DeviceNode = (EFI_DEVICE_PATH_PROTOCOL *)AllocatePool (END_DEVICE_PATH_LENGTH);
ASSERT (DeviceNode != NULL); if (DeviceNode == NULL) {
ASSERT (DeviceNode != NULL);
return NULL;
}
SetDevicePathEndNode (DeviceNode); SetDevicePathEndNode (DeviceNode);
DeviceNode->SubType = END_INSTANCE_DEVICE_PATH_SUBTYPE; DeviceNode->SubType = END_INSTANCE_DEVICE_PATH_SUBTYPE;
NewDevicePath = AppendDevicePathNode (DevicePath, DeviceNode); NewDevicePath = AppendDevicePathNode (DevicePath, DeviceNode);
FreePool (DevicePath); if (DevicePath != NULL) {
FreePool (DeviceNode); FreePool (DevicePath);
}
if (DeviceNode != NULL) {
FreePool (DeviceNode);
}
DevicePath = NewDevicePath; DevicePath = NewDevicePath;
} }
} }

View File

@ -1842,7 +1842,11 @@ DevPathToTextUri (
Uri = DevPath; Uri = DevPath;
UriLength = DevicePathNodeLength (Uri) - sizeof (URI_DEVICE_PATH); UriLength = DevicePathNodeLength (Uri) - sizeof (URI_DEVICE_PATH);
UriStr = AllocatePool (UriLength + 1); UriStr = AllocatePool (UriLength + 1);
ASSERT (UriStr != NULL);
if (UriStr == NULL) {
ASSERT (UriStr != NULL);
return;
}
CopyMem (UriStr, Uri->Uri, UriLength); CopyMem (UriStr, Uri->Uri, UriLength);
UriStr[UriLength] = '\0'; UriStr[UriLength] = '\0';

View File

@ -930,6 +930,11 @@ FileHandleReturnLine (
Status = FileHandleReadLine (Handle, RetVal, &Size, FALSE, Ascii); Status = FileHandleReadLine (Handle, RetVal, &Size, FALSE, Ascii);
if (Status == EFI_BUFFER_TOO_SMALL) { if (Status == EFI_BUFFER_TOO_SMALL) {
RetVal = AllocateZeroPool (Size); RetVal = AllocateZeroPool (Size);
if (RetVal == NULL) {
return NULL;
}
Status = FileHandleReadLine (Handle, RetVal, &Size, FALSE, Ascii); Status = FileHandleReadLine (Handle, RetVal, &Size, FALSE, Ascii);
} }

View File

@ -220,7 +220,12 @@ LocateAcpiTableInAcpiConfigurationTable (
NULL, NULL,
NULL NULL
); );
Table = LocateAcpiDsdtFromFadt (Fadt);
if (Fadt != NULL) {
Table = LocateAcpiDsdtFromFadt (Fadt);
} else {
Table = NULL;
}
} else if (Signature == EFI_ACPI_2_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE) { } else if (Signature == EFI_ACPI_2_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE) {
ASSERT (PreviousTable == NULL); ASSERT (PreviousTable == NULL);
// //
@ -234,7 +239,12 @@ LocateAcpiTableInAcpiConfigurationTable (
NULL, NULL,
NULL NULL
); );
Table = LocateAcpiFacsFromFadt (Fadt);
if (Fadt != NULL) {
Table = LocateAcpiFacsFromFadt (Fadt);
} else {
Table = NULL;
}
} else { } else {
Table = ScanTableInSDT ( Table = ScanTableInSDT (
Xsdt, Xsdt,
@ -275,7 +285,12 @@ LocateAcpiTableInAcpiConfigurationTable (
NULL, NULL,
NULL NULL
); );
Table = LocateAcpiDsdtFromFadt (Fadt);
if (Fadt != NULL) {
Table = LocateAcpiDsdtFromFadt (Fadt);
} else {
Table = NULL;
}
} else if (Signature == EFI_ACPI_2_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE) { } else if (Signature == EFI_ACPI_2_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE) {
ASSERT (PreviousTable == NULL); ASSERT (PreviousTable == NULL);
// //
@ -289,7 +304,12 @@ LocateAcpiTableInAcpiConfigurationTable (
NULL, NULL,
NULL NULL
); );
Table = LocateAcpiFacsFromFadt (Fadt);
if (Fadt != NULL) {
Table = LocateAcpiFacsFromFadt (Fadt);
} else {
Table = NULL;
}
} else { } else {
Table = ScanTableInSDT ( Table = ScanTableInSDT (
Rsdt, Rsdt,

View File

@ -477,7 +477,11 @@ CreatePopUp (
// Allocate a buffer for a single line of the popup with borders and a Null-terminator // Allocate a buffer for a single line of the popup with borders and a Null-terminator
// //
Line = AllocateZeroPool ((MaxLength + 3) * sizeof (CHAR16)); Line = AllocateZeroPool ((MaxLength + 3) * sizeof (CHAR16));
ASSERT (Line != NULL);
if (Line == NULL) {
ASSERT (Line != NULL);
return;
}
// //
// Draw top of popup box // Draw top of popup box
@ -513,7 +517,12 @@ CreatePopUp (
// //
UefiLibGetStringWidth (String, TRUE, MaxLength, &Length); UefiLibGetStringWidth (String, TRUE, MaxLength, &Length);
TmpString = AllocateZeroPool ((Length + 1) * sizeof (CHAR16)); TmpString = AllocateZeroPool ((Length + 1) * sizeof (CHAR16));
ASSERT (TmpString != NULL);
if (TmpString == NULL) {
ASSERT (TmpString != NULL);
break;
}
StrnCpyS (TmpString, Length + 1, String, Length - 3); StrnCpyS (TmpString, Length + 1, String, Length - 3);
StrCatS (TmpString, Length + 1, L"..."); StrCatS (TmpString, Length + 1, L"...");

View File

@ -65,7 +65,11 @@ InternalPrint (
BufferSize = (PcdGet32 (PcdUefiLibMaxPrintBufferSize) + 1) * sizeof (CHAR16); BufferSize = (PcdGet32 (PcdUefiLibMaxPrintBufferSize) + 1) * sizeof (CHAR16);
Buffer = (CHAR16 *)AllocatePool (BufferSize); Buffer = (CHAR16 *)AllocatePool (BufferSize);
ASSERT (Buffer != NULL);
if (Buffer == NULL) {
ASSERT (Buffer != NULL);
return 0;
}
Return = UnicodeVSPrint (Buffer, BufferSize, Format, Marker); Return = UnicodeVSPrint (Buffer, BufferSize, Format, Marker);
@ -199,7 +203,11 @@ AsciiInternalPrint (
BufferSize = (PcdGet32 (PcdUefiLibMaxPrintBufferSize) + 1) * sizeof (CHAR16); BufferSize = (PcdGet32 (PcdUefiLibMaxPrintBufferSize) + 1) * sizeof (CHAR16);
Buffer = (CHAR16 *)AllocatePool (BufferSize); Buffer = (CHAR16 *)AllocatePool (BufferSize);
ASSERT (Buffer != NULL);
if (Buffer == NULL) {
ASSERT (Buffer != NULL);
return 0;
}
Return = UnicodeVSPrintAsciiFormat (Buffer, BufferSize, Format, Marker); Return = UnicodeVSPrintAsciiFormat (Buffer, BufferSize, Format, Marker);
@ -419,7 +427,11 @@ InternalPrintGraphic (
} }
Blt = (EFI_IMAGE_OUTPUT *)AllocateZeroPool (sizeof (EFI_IMAGE_OUTPUT)); Blt = (EFI_IMAGE_OUTPUT *)AllocateZeroPool (sizeof (EFI_IMAGE_OUTPUT));
ASSERT (Blt != NULL);
if (Blt == NULL) {
ASSERT (Blt != NULL);
goto Error;
}
Blt->Width = (UINT16)(HorizontalResolution); Blt->Width = (UINT16)(HorizontalResolution);
Blt->Height = (UINT16)(VerticalResolution); Blt->Height = (UINT16)(VerticalResolution);
@ -625,7 +637,11 @@ PrintXY (
BufferSize = (PcdGet32 (PcdUefiLibMaxPrintBufferSize) + 1) * sizeof (CHAR16); BufferSize = (PcdGet32 (PcdUefiLibMaxPrintBufferSize) + 1) * sizeof (CHAR16);
Buffer = (CHAR16 *)AllocatePool (BufferSize); Buffer = (CHAR16 *)AllocatePool (BufferSize);
ASSERT (Buffer != NULL);
if (Buffer == NULL) {
ASSERT (Buffer != NULL);
return 0;
}
PrintNum = UnicodeVSPrint (Buffer, BufferSize, Format, Marker); PrintNum = UnicodeVSPrint (Buffer, BufferSize, Format, Marker);
@ -703,7 +719,11 @@ AsciiPrintXY (
BufferSize = (PcdGet32 (PcdUefiLibMaxPrintBufferSize) + 1) * sizeof (CHAR16); BufferSize = (PcdGet32 (PcdUefiLibMaxPrintBufferSize) + 1) * sizeof (CHAR16);
Buffer = (CHAR16 *)AllocatePool (BufferSize); Buffer = (CHAR16 *)AllocatePool (BufferSize);
ASSERT (Buffer != NULL);
if (Buffer == NULL) {
ASSERT (Buffer != NULL);
return 0;
}
PrintNum = UnicodeSPrintAsciiFormat (Buffer, BufferSize, Format, Marker); PrintNum = UnicodeSPrintAsciiFormat (Buffer, BufferSize, Format, Marker);

View File

@ -184,7 +184,11 @@ DxePciSegmentLibPciRootBridgeIoReadWorker (
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *PciRootBridgeIo; EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *PciRootBridgeIo;
PciRootBridgeIo = PciSegmentLibSearchForRootBridge (Address); PciRootBridgeIo = PciSegmentLibSearchForRootBridge (Address);
ASSERT (PciRootBridgeIo != NULL);
if (PciRootBridgeIo == NULL) {
ASSERT (PciRootBridgeIo != NULL);
return 0;
}
PciRootBridgeIo->Pci.Read ( PciRootBridgeIo->Pci.Read (
PciRootBridgeIo, PciRootBridgeIo,
@ -223,7 +227,11 @@ DxePciSegmentLibPciRootBridgeIoWriteWorker (
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *PciRootBridgeIo; EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *PciRootBridgeIo;
PciRootBridgeIo = PciSegmentLibSearchForRootBridge (Address); PciRootBridgeIo = PciSegmentLibSearchForRootBridge (Address);
ASSERT (PciRootBridgeIo != NULL);
if (PciRootBridgeIo == NULL) {
ASSERT (PciRootBridgeIo != NULL);
return 0;
}
PciRootBridgeIo->Pci.Write ( PciRootBridgeIo->Pci.Write (
PciRootBridgeIo, PciRootBridgeIo,