udhcpc: check that 4-byte options are indeed 4-byte, closes 11506
function old new delta udhcp_get_option32 - 27 +27 udhcp_get_option 231 248 +17 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 1/0 up/down: 44/0) Total: 44 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
4b72aebe80
commit
6d3b4bb24d
4 changed files with 29 additions and 6 deletions
|
@ -640,7 +640,7 @@ static void add_server_options(struct dhcp_packet *packet)
|
|||
static uint32_t select_lease_time(struct dhcp_packet *packet)
|
||||
{
|
||||
uint32_t lease_time_sec = server_config.max_lease_sec;
|
||||
uint8_t *lease_time_opt = udhcp_get_option(packet, DHCP_LEASE_TIME);
|
||||
uint8_t *lease_time_opt = udhcp_get_option32(packet, DHCP_LEASE_TIME);
|
||||
if (lease_time_opt) {
|
||||
move_from_unaligned32(lease_time_sec, lease_time_opt);
|
||||
lease_time_sec = ntohl(lease_time_sec);
|
||||
|
@ -987,7 +987,7 @@ int udhcpd_main(int argc UNUSED_PARAM, char **argv)
|
|||
}
|
||||
|
||||
/* Get SERVER_ID if present */
|
||||
server_id_opt = udhcp_get_option(&packet, DHCP_SERVER_ID);
|
||||
server_id_opt = udhcp_get_option32(&packet, DHCP_SERVER_ID);
|
||||
if (server_id_opt) {
|
||||
uint32_t server_id_network_order;
|
||||
move_from_unaligned32(server_id_network_order, server_id_opt);
|
||||
|
@ -1011,7 +1011,7 @@ int udhcpd_main(int argc UNUSED_PARAM, char **argv)
|
|||
}
|
||||
|
||||
/* Get REQUESTED_IP if present */
|
||||
requested_ip_opt = udhcp_get_option(&packet, DHCP_REQUESTED_IP);
|
||||
requested_ip_opt = udhcp_get_option32(&packet, DHCP_REQUESTED_IP);
|
||||
if (requested_ip_opt) {
|
||||
move_from_unaligned32(requested_nip, requested_ip_opt);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue