if (result == 0)
return ISC_R_UNEXPECTED;
- /*
- * If we didn't at least get the fixed portion of the BOOTP
- * packet, drop the packet.
- * Previously we allowed packets with no sname or filename
- * as we were aware of at least one client that did. But
- * a bug caused short packets to not work and nobody has
- * complained, it seems rational to tighten up that
- * restriction.
- */
- if (result < DHCP_FIXED_NON_UDP)
+ /* If we didn't at least get the fixed portion of the BOOTP
+ packet, drop the packet. We're allowing packets with no
+ sname or filename, because we're aware of at least one
+ client that sends such packets, but this definitely falls
+ into the category of being forgiving. */
+ if (result < DHCP_FIXED_NON_UDP - DHCP_SNAME_LEN - DHCP_FILE_LEN)
return ISC_R_UNEXPECTED;
#if defined(IP_PKTINFO) && defined(IP_RECVPKTINFO) && defined(USE_V4_PKTINFO)
} else if (bootpp) {
mb_size = 64;
if (inpacket != NULL &&
- (inpacket->packet_length >= 64 + DHCP_FIXED_NON_UDP))
- mb_size = inpacket->packet_length - DHCP_FIXED_NON_UDP;
+ (inpacket->packet_length - DHCP_FIXED_LEN >= 64))
+ mb_size = inpacket->packet_length - DHCP_FIXED_LEN;
} else
mb_size = DHCP_MIN_OPTION_LEN;
* giaddr.
*/
if (!packet->agent_options_stashed &&
- (packet->options != NULL) &&
packet->options->universe_count > agent_universe.index &&
packet->options->universes[agent_universe.index] != NULL) {
oc = lookup_option (&server_universe, state -> options,
* by the user into the new state, not just give up.
*/
if (!packet->agent_options_stashed &&
- (packet->options != NULL) &&
packet->options->universe_count > agent_universe.index &&
packet->options->universes[agent_universe.index] != NULL &&
(options->universe_count <= agent_universe.index ||