mirror of
https://gitlab.isc.org/isc-projects/dhcp
synced 2025-08-31 06:15:55 +00:00
Modify the DDNS handling code. In a previous patch we added logging
code to the DDNS handling. This code included a bug that caused it to attempt to dereference a NULL pointer and eventually segfault. While reviewing the code as we addressed this problem, we determined that some of the updates to the lease structures would not work as planned since the structures being updated were in the process of being freed: these updates were removed. In addition we removed an incorrect call to the DDNS removal function that could cause a failure during the removal of DDNS information from the DNS server. Thanks to Jasper Jongmans for reporting this issue. [ISC-Bugs #27078] CVE: CVE-2011-4868
This commit is contained in:
@@ -1539,7 +1539,7 @@ struct ipv6_pool {
|
||||
#define DDNS_EXECUTE_NEXT 0x20
|
||||
#define DDNS_ABORT 0x40
|
||||
#define DDNS_STATIC_LEASE 0x80
|
||||
|
||||
#define DDNS_ACTIVE_LEASE 0x100
|
||||
/*
|
||||
* The following two groups are separate and we could reuse
|
||||
* values but not reusing them may be useful in the future.
|
||||
@@ -1580,7 +1580,7 @@ typedef struct dhcp_ddns_cb {
|
||||
int zone_addr_count;
|
||||
struct dns_zone *zone;
|
||||
|
||||
int flags;
|
||||
u_int16_t flags;
|
||||
TIME timeout;
|
||||
int state;
|
||||
ddns_action_t cur_func;
|
||||
@@ -1932,7 +1932,7 @@ void parse_server_duid_conf(struct parse *cfile);
|
||||
/* ddns.c */
|
||||
int ddns_updates(struct packet *, struct lease *, struct lease *,
|
||||
struct iasubopt *, struct iasubopt *, struct option_state *);
|
||||
int ddns_removals(struct lease *, struct iasubopt *, struct dhcp_ddns_cb *);
|
||||
int ddns_removals(struct lease *, struct iasubopt *, struct dhcp_ddns_cb *, isc_boolean_t);
|
||||
#if defined (TRACING)
|
||||
void trace_ddns_init(void);
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user