mirror of
https://github.com/ipxe/ipxe
synced 2025-12-26 17:42:47 +03:00
[pxe] Clarify comments regarding shrinking of cached DHCP packet
Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
@@ -58,6 +58,7 @@ static void cachedhcp_init ( void ) {
|
|||||||
struct dhcp_packet *dhcppkt;
|
struct dhcp_packet *dhcppkt;
|
||||||
struct dhcp_packet *tmp;
|
struct dhcp_packet *tmp;
|
||||||
struct dhcphdr *dhcphdr;
|
struct dhcphdr *dhcphdr;
|
||||||
|
size_t max_len;
|
||||||
size_t len;
|
size_t len;
|
||||||
|
|
||||||
/* Do nothing if no cached DHCPACK is present */
|
/* Do nothing if no cached DHCPACK is present */
|
||||||
@@ -69,23 +70,25 @@ static void cachedhcp_init ( void ) {
|
|||||||
/* No reliable way to determine length before parsing packet;
|
/* No reliable way to determine length before parsing packet;
|
||||||
* start by assuming maximum length permitted by PXE.
|
* start by assuming maximum length permitted by PXE.
|
||||||
*/
|
*/
|
||||||
len = sizeof ( BOOTPLAYER_t );
|
max_len = sizeof ( BOOTPLAYER_t );
|
||||||
|
|
||||||
/* Allocate and populate DHCP packet */
|
/* Allocate and populate DHCP packet */
|
||||||
dhcppkt = zalloc ( sizeof ( *dhcppkt ) + len );
|
dhcppkt = zalloc ( sizeof ( *dhcppkt ) + max_len );
|
||||||
if ( ! dhcppkt ) {
|
if ( ! dhcppkt ) {
|
||||||
DBGC ( colour, "CACHEDHCP could not allocate copy\n" );
|
DBGC ( colour, "CACHEDHCP could not allocate copy\n" );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
dhcphdr = ( ( ( void * ) dhcppkt ) + sizeof ( *dhcppkt ) );
|
dhcphdr = ( ( ( void * ) dhcppkt ) + sizeof ( *dhcppkt ) );
|
||||||
copy_from_user ( dhcphdr, phys_to_user ( cached_dhcpack_phys ), 0,
|
copy_from_user ( dhcphdr, phys_to_user ( cached_dhcpack_phys ), 0,
|
||||||
len );
|
max_len );
|
||||||
dhcppkt_init ( dhcppkt, dhcphdr, len );
|
dhcppkt_init ( dhcppkt, dhcphdr, max_len );
|
||||||
|
|
||||||
/* Resize packet to required length. If reallocation fails,
|
/* Shrink packet to required length. If reallocation fails,
|
||||||
* just continue to use the original packet.
|
* just continue to use the original packet and waste the
|
||||||
|
* unused space.
|
||||||
*/
|
*/
|
||||||
len = dhcppkt_len ( dhcppkt );
|
len = dhcppkt_len ( dhcppkt );
|
||||||
|
assert ( len <= max_len );
|
||||||
tmp = realloc ( dhcppkt, ( sizeof ( *dhcppkt ) + len ) );
|
tmp = realloc ( dhcppkt, ( sizeof ( *dhcppkt ) + len ) );
|
||||||
if ( tmp )
|
if ( tmp )
|
||||||
dhcppkt = tmp;
|
dhcppkt = tmp;
|
||||||
|
|||||||
Reference in New Issue
Block a user