diff --git a/RELNOTES b/RELNOTES index 70206505..b215ccd9 100644 --- a/RELNOTES +++ b/RELNOTES @@ -159,6 +159,9 @@ work on other platforms. Please report any problems and suggested fixes to - Documentation cleanup [ISC-Bugs #23326] Updated References document, several man page updates +- Server no longer complains about NULL pointer when configured + server-identifier expression fails to evaluate. [ISC-Bugs #24547] + Changes since 4.2.0 - Documentation cleanup covering multiple tickets diff --git a/server/dhcp.c b/server/dhcp.c index 3df279f0..126b8fc4 100644 --- a/server/dhcp.c +++ b/server/dhcp.c @@ -4395,15 +4395,18 @@ get_server_source_address(struct in_addr *from, option_num = DHO_DHCP_SERVER_IDENTIFIER; oc = lookup_option(&dhcp_universe, options, option_num); - if ((oc != NULL) && - evaluate_option_cache(&d, packet, NULL, NULL, packet->options, - options, &global_scope, oc, MDL)) { - if (d.len == sizeof(*from)) { - memcpy(from, d.data, sizeof(*from)); + if (oc != NULL) { + if (evaluate_option_cache(&d, packet, NULL, NULL, + packet->options, options, + &global_scope, oc, MDL)) { + if (d.len == sizeof(*from)) { + memcpy(from, d.data, sizeof(*from)); + data_string_forget(&d, MDL); + return; + } data_string_forget(&d, MDL); - return; } - data_string_forget(&d, MDL); + oc = NULL; } if (packet->interface->address_count > 0) {