\r
case Dhcp4SendDiscover:\r
case Dhcp4SendRequest:\r
+ if (Packet->Length > PXEBC_DHCP4_MAX_PACKET_SIZE) {\r
+ //\r
+ // If the to be sent packet exceeds the maximum length, abort the DHCP process.\r
+ //\r
+ Status = EFI_ABORTED;\r
+ break;\r
+ }\r
+ \r
if (Mode->SendGUID) {\r
//\r
// send the system GUID instead of the MAC address as the hardware address\r
\r
case Dhcp4RcvdOffer:\r
Status = EFI_NOT_READY;\r
+ if (Packet->Length > PXEBC_DHCP4_MAX_PACKET_SIZE) {\r
+ //\r
+ // Ignore the incoming Offers which exceed the maximum length.\r
+ //\r
+ break;\r
+ }\r
+ \r
if (Private->NumOffers < PXEBC_MAX_OFFER_NUM) {\r
//\r
// Cache the dhcp offers in Private->Dhcp4Offers[]\r
break;\r
\r
case Dhcp4RcvdAck:\r
+ if (Packet->Length > PXEBC_DHCP4_MAX_PACKET_SIZE) {\r
+ //\r
+ // Abort the DHCP if the ACK packet exceeds the maximum length.\r
+ //\r
+ Status = EFI_ABORTED;\r
+ break;\r
+ }\r
+\r
//\r
// Cache Ack\r
//\r
\r
#define PXEBC_DHCP4_MAX_OPTION_NUM 16\r
#define PXEBC_DHCP4_MAX_OPTION_SIZE 312\r
-#define PXEBC_DHCP4_MAX_PACKET_SIZE 1472\r
+#define PXEBC_DHCP4_MAX_PACKET_SIZE (sizeof (EFI_PXE_BASE_CODE_PACKET))\r
\r
#define PXEBC_DHCP4_S_PORT 67\r
#define PXEBC_DHCP4_C_PORT 68\r