X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=MdeModulePkg%2FUniversal%2FNetwork%2FUefiPxeBcDxe%2FPxeBcDhcp.c;h=5e86cf5779e6cc10e2789bc221dcaaad79820c5e;hp=9b5080f15dbafca09c2be10745f3381ef7f637d7;hb=2ce5c88a7adaea3eeeccc932b18da5f02440f8cd;hpb=894d038a8d0e99d456042e2b6d1554c4a406ea70 diff --git a/MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcDhcp.c b/MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcDhcp.c index 9b5080f15d..5e86cf5779 100644 --- a/MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcDhcp.c +++ b/MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcDhcp.c @@ -37,8 +37,6 @@ UINT8 mInterestedDhcp4Tags[PXEBC_DHCP4_TAG_INDEX_MAX] = { @param Seed Pointer to the message instance of the DHCP4 packet. @param Udp4 Pointer to the EFI_UDP4_PROTOCOL instance. - @return none. - **/ VOID PxeBcInitSeedPacket ( @@ -73,8 +71,6 @@ PxeBcInitSeedPacket ( @param Dst Pointer to the EFI_DHCP4_PROTOCOL instance. @param Src Pointer to the EFI_DHCP4_PROTOCOL instance. - @return None. - **/ VOID PxeBcCopyEfiDhcp4Packet ( @@ -96,8 +92,6 @@ PxeBcCopyEfiDhcp4Packet ( @param OfferIndex Index of cached packets as complements of pxe mode data, the index is maximum offer number. - @return None. - **/ VOID PxeBcCopyProxyOffer ( @@ -109,6 +103,7 @@ PxeBcCopyProxyOffer ( EFI_DHCP4_PACKET *Offer; ASSERT (OfferIndex < Private->NumOffers); + ASSERT (OfferIndex < PXEBC_MAX_OFFER_NUM); Mode = Private->PxeBc.Mode; Offer = &Private->Dhcp4Offers[OfferIndex].Packet.Offer; @@ -280,10 +275,11 @@ PxeBcTryBinl ( Offer = &Private->Dhcp4Offers[Index].Packet.Offer; // - // use option 54, if zero, use siaddr in header + // Use siaddr(next server) in DHCPOFFER packet header, if zero, use option 54(server identifier) + // in DHCPOFFER packet. + // (It does not comply with PXE Spec, Ver2.1) // - ZeroMem (&ServerIp, sizeof(EFI_IP_ADDRESS)); - if (Private->Dhcp4Offers[Index].Dhcp4Option[PXEBC_DHCP4_TAG_INDEX_SERVER_ID] != NULL) { + if (EFI_IP4_EQUAL (&Offer->Dhcp4.Header.ServerAddr.Addr, &mZeroIp4Addr)) { CopyMem ( &ServerIp.Addr[0], Private->Dhcp4Offers[Index].Dhcp4Option[PXEBC_DHCP4_TAG_INDEX_SERVER_ID]->Data, @@ -532,8 +528,6 @@ PxeBcCheckSelectedOffer ( @param Private Pointer to PxeBc private data. @param RcvdOffer Pointer to the received Dhcp proxy offer packet. - @return None. - **/ VOID PxeBcCacheDhcpOffer ( @@ -624,8 +618,6 @@ PxeBcCacheDhcpOffer ( @param Private Pointer to PxeBc private data. - @return None - **/ VOID PxeBcSelectOffer ( @@ -1122,8 +1114,6 @@ PxeBcDiscvBootService ( EFI_DHCP4_HEADER *DhcpHeader; UINT32 Xid; - ASSERT (IsDiscv && (Layer != NULL)); - Mode = Private->PxeBc.Mode; Dhcp4 = Private->Dhcp4; Status = EFI_SUCCESS; @@ -1145,6 +1135,7 @@ PxeBcDiscvBootService ( OptCount = PxeBcBuildDhcpOptions (Private, OptList, FALSE); if (IsDiscv) { + ASSERT (Layer != NULL); // // Add vendor option of PXE_BOOT_ITEM // @@ -1465,8 +1456,6 @@ PxeBcParseVendorOptions ( @param Str Pointer to a string (boot item string). @param Len The length of string. - @return None. - **/ VOID PxeBcDisplayBootItem ( @@ -1726,10 +1715,10 @@ PxeBcSelectBootMenu ( } while (MenuSize > 0) { - MenuArray[Index] = MenuItem; + MenuArray[Index++] = MenuItem; MenuSize = (UINT8) (MenuSize - (MenuItem->DescLen + 3)); MenuItem = (PXEBC_BOOT_MENU_ENTRY *) ((UINT8 *) MenuItem + MenuItem->DescLen + 3); - if (Index++ > (PXEBC_MAX_MENU_NUM - 1)) { + if (Index >= PXEBC_MAX_MENU_NUM) { break; } } @@ -1749,6 +1738,7 @@ PxeBcSelectBootMenu ( TopRow = gST->ConOut->Mode->CursorRow - MenuNum; do { + ASSERT (Select < PXEBC_MAX_MENU_NUM); // // highlight selected row //