mirror of
https://gitlab.isc.org/isc-projects/dhcp
synced 2025-08-30 05:47:45 +00:00
Handle a relay forward message with an unspecified address in the
link address field. Previously such a message would cause the server to crash. [ISC-Bugs #21992]
This commit is contained in:
parent
ad59838e33
commit
4dc5a6b1fa
5
RELNOTES
5
RELNOTES
@ -129,6 +129,11 @@ work on other platforms. Please report any problems and suggested fixes to
|
||||
backwards compatible with older lease files not finding a semi-colon
|
||||
is also accepted. [ISC-Bugs #22303].
|
||||
|
||||
! Handle a relay forward message with an unspecified address in the
|
||||
link address field. Previously such a message would cause the
|
||||
server to crash. [ISC-Bugs #21992]
|
||||
CERT: TBA CVE: TBA
|
||||
|
||||
Changes since 4.2.0b2
|
||||
|
||||
- Add declaration for variable in debug code in alloc.c. [ISC-Bugs #21472]
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2006-2009 by Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (C) 2006-2010 by Internet Systems Consortium, Inc. ("ISC")
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
@ -4207,10 +4207,25 @@ shared_network_from_packet6(struct shared_network **shared,
|
||||
* If there is no link address, we will use the interface
|
||||
* that this packet came in on to pick the shared_network.
|
||||
*/
|
||||
} else {
|
||||
} else if (packet->interface != NULL) {
|
||||
status = shared_network_reference(shared,
|
||||
packet->interface->shared_network,
|
||||
MDL);
|
||||
if (packet->dhcpv6_container_packet != NULL) {
|
||||
log_info("[L2 Relay] No link address in relay packet "
|
||||
"assuming L2 relay and using receiving "
|
||||
"interface");
|
||||
}
|
||||
|
||||
} else {
|
||||
/*
|
||||
* We shouldn't be able to get here but if there is no link
|
||||
* address and no interface we don't know where to get the
|
||||
* pool from log an error and return an error.
|
||||
*/
|
||||
log_error("No interface and no link address "
|
||||
"can't determine pool");
|
||||
status = DHCP_R_INVALIDARG;
|
||||
}
|
||||
|
||||
return status;
|
||||
@ -5508,6 +5523,7 @@ dhcpv6_relay_forw(struct data_string *reply_ret, struct packet *packet) {
|
||||
|
||||
enc_packet->client_port = packet->client_port;
|
||||
enc_packet->client_addr = packet->client_addr;
|
||||
interface_reference(&enc_packet->interface, packet->interface, MDL);
|
||||
enc_packet->dhcpv6_container_packet = packet;
|
||||
|
||||
msg_type = enc_opt_data.data[0];
|
||||
|
Loading…
x
Reference in New Issue
Block a user