2
0
mirror of https://gitlab.isc.org/isc-projects/dhcp synced 2025-08-31 06:15:55 +00:00

- An option definition referencing leak was fixed, which resulted in early

termination of dhclient upon the renewal event. [ISC-Bugs #16423]
This commit is contained in:
David Hankins
2006-10-17 20:45:59 +00:00
parent 7cbeb9f493
commit 66c8f7347a
4 changed files with 12 additions and 8 deletions

View File

@@ -36,7 +36,10 @@ the README file.
- UPDREQ/UPDREQALL handling was optimized - it no longer dequeues and - UPDREQ/UPDREQALL handling was optimized - it no longer dequeues and
requeues all pending updates. This should reduce the number of spurious requeues all pending updates. This should reduce the number of spurious
'xid mismatch' log mesasges. 'xid mismatch' log messages.
- An option definition referencing leak was fixed, which resulted in early
termination of dhclient upon the renewal event.
Changes since 3.0 (New Features) Changes since 3.0 (New Features)

View File

@@ -34,7 +34,7 @@
#ifndef lint #ifndef lint
static char copyright[] = static char copyright[] =
"$Id: options.c,v 1.99 2006/08/24 14:58:55 dhankins Exp $ Copyright (c) 2004-2006 Internet Systems Consortium. All rights reserved.\n"; "$Id: options.c,v 1.100 2006/10/17 20:45:59 dhankins Exp $ Copyright (c) 2004-2006 Internet Systems Consortium. All rights reserved.\n";
#endif /* not lint */ #endif /* not lint */
#define DHCP_OPTION_DATA #define DHCP_OPTION_DATA
@@ -1689,7 +1689,7 @@ void set_option (universe, options, option, op)
break; break;
} }
} }
noc -> option = oc -> option; option_reference(&(noc->option), oc->option, MDL);
save_option (universe, options, noc); save_option (universe, options, noc);
option_cache_dereference (&noc, MDL); option_cache_dereference (&noc, MDL);
break; break;
@@ -2992,7 +2992,7 @@ add_option(struct option_state *options,
return 0; return 0;
} }
oc->option = option; option_reference(&(oc->option), option, MDL);
save_option(&dhcp_universe, options, oc); save_option(&dhcp_universe, options, oc);
option_cache_dereference(&oc, MDL); option_cache_dereference(&oc, MDL);

View File

@@ -34,7 +34,7 @@
#ifndef lint #ifndef lint
static char copyright[] = static char copyright[] =
"$Id: tree.c,v 1.108 2006/07/31 22:19:51 dhankins Exp $ Copyright (c) 2004-2006 Internet Systems Consortium. All rights reserved.\n"; "$Id: tree.c,v 1.109 2006/10/17 20:45:59 dhankins Exp $ Copyright (c) 2004-2006 Internet Systems Consortium. All rights reserved.\n";
#endif /* not lint */ #endif /* not lint */
#include "dhcpd.h" #include "dhcpd.h"
@@ -242,7 +242,7 @@ int make_const_option_cache (oc, buffer, data, len, option, file, line)
(*oc) -> data.terminated = 0; (*oc) -> data.terminated = 0;
if (data) if (data)
memcpy (&bp -> data [0], data, len); memcpy (&bp -> data [0], data, len);
(*oc) -> option = option; option_reference(&((*oc)->option), option, MDL);
return 1; return 1;
} }

View File

@@ -34,7 +34,7 @@
#ifndef lint #ifndef lint
static char copyright[] = static char copyright[] =
"$Id: dhcp.c,v 1.212 2006/08/22 17:13:25 dhankins Exp $ Copyright (c) 2004-2006 Internet Systems Consortium. All rights reserved.\n"; "$Id: dhcp.c,v 1.213 2006/10/17 20:45:59 dhankins Exp $ Copyright (c) 2004-2006 Internet Systems Consortium. All rights reserved.\n";
#endif /* not lint */ #endif /* not lint */
#include "dhcpd.h" #include "dhcpd.h"
@@ -2426,7 +2426,8 @@ void ack_lease (packet, lease, offer, when, msg, ms_nulltp, hp)
expression_reference (&noc -> expression, expression_reference (&noc -> expression,
oc -> expression, MDL); oc -> expression, MDL);
if (oc -> option) if (oc -> option)
noc -> option = oc -> option; option_reference(&(noc->option), oc->option,
MDL);
} }
save_option (&dhcp_universe, state -> options, noc); save_option (&dhcp_universe, state -> options, noc);