@param Seed Pointer to the message instance of the DHCP4 packet.\r
@param Udp4 Pointer to the EFI_UDP4_PROTOCOL instance.\r
\r
- @return none.\r
-\r
**/\r
VOID\r
PxeBcInitSeedPacket (\r
@param Dst Pointer to the EFI_DHCP4_PROTOCOL instance.\r
@param Src Pointer to the EFI_DHCP4_PROTOCOL instance.\r
\r
- @return None.\r
-\r
**/\r
VOID\r
PxeBcCopyEfiDhcp4Packet (\r
@param OfferIndex Index of cached packets as complements of pxe mode data,\r
the index is maximum offer number.\r
\r
- @return None.\r
-\r
**/\r
VOID\r
PxeBcCopyProxyOffer (\r
EFI_DHCP4_PACKET *Offer;\r
\r
ASSERT (OfferIndex < Private->NumOffers);\r
+ ASSERT (OfferIndex < PXEBC_MAX_OFFER_NUM);\r
\r
Mode = Private->PxeBc.Mode;\r
Offer = &Private->Dhcp4Offers[OfferIndex].Packet.Offer;\r
Offer = &Private->Dhcp4Offers[Index].Packet.Offer;\r
\r
//\r
- // use option 54, if zero, use siaddr in header\r
+ // Use siaddr(next server) in DHCPOFFER packet header, if zero, use option 54(server identifier)\r
+ // in DHCPOFFER packet.\r
+ // (It does not comply with PXE Spec, Ver2.1)\r
//\r
- ZeroMem (&ServerIp, sizeof(EFI_IP_ADDRESS));\r
- if (Private->Dhcp4Offers[Index].Dhcp4Option[PXEBC_DHCP4_TAG_INDEX_SERVER_ID] != NULL) {\r
+ if (EFI_IP4_EQUAL (&Offer->Dhcp4.Header.ServerAddr.Addr, &mZeroIp4Addr)) {\r
CopyMem (\r
&ServerIp.Addr[0],\r
Private->Dhcp4Offers[Index].Dhcp4Option[PXEBC_DHCP4_TAG_INDEX_SERVER_ID]->Data,\r
@param Private Pointer to PxeBc private data.\r
@param RcvdOffer Pointer to the received Dhcp proxy offer packet.\r
\r
- @return None.\r
-\r
**/\r
VOID\r
PxeBcCacheDhcpOffer (\r
\r
@param Private Pointer to PxeBc private data.\r
\r
- @return None\r
-\r
**/\r
VOID\r
PxeBcSelectOffer (\r
EFI_DHCP4_HEADER *DhcpHeader;\r
UINT32 Xid;\r
\r
- ASSERT (IsDiscv && (Layer != NULL));\r
-\r
Mode = Private->PxeBc.Mode;\r
Dhcp4 = Private->Dhcp4;\r
Status = EFI_SUCCESS;\r
OptCount = PxeBcBuildDhcpOptions (Private, OptList, FALSE);\r
\r
if (IsDiscv) {\r
+ ASSERT (Layer != NULL);\r
//\r
// Add vendor option of PXE_BOOT_ITEM\r
//\r
@param Str Pointer to a string (boot item string).\r
@param Len The length of string.\r
\r
- @return None.\r
-\r
**/\r
VOID\r
PxeBcDisplayBootItem (\r
}\r
\r
while (MenuSize > 0) {\r
- MenuArray[Index] = MenuItem;\r
+ MenuArray[Index++] = MenuItem;\r
MenuSize = (UINT8) (MenuSize - (MenuItem->DescLen + 3));\r
MenuItem = (PXEBC_BOOT_MENU_ENTRY *) ((UINT8 *) MenuItem + MenuItem->DescLen + 3);\r
- if (Index++ > (PXEBC_MAX_MENU_NUM - 1)) {\r
+ if (Index >= PXEBC_MAX_MENU_NUM) {\r
break;\r
}\r
}\r
TopRow = gST->ConOut->Mode->CursorRow - MenuNum;\r
\r
do {\r
+ ASSERT (Select < PXEBC_MAX_MENU_NUM);\r
//\r
// highlight selected row\r
//\r