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
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
}\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