Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ISC Open Source Projects
dhcp
Commits
251bb4b9
Commit
251bb4b9
authored
Jun 21, 2017
by
Thomas Markwalder
Browse files
[master] Fixed crash in dhclient when de-preferencing a lease
Merges in rt44373.
parent
8c785e79
Changes
2
Hide whitespace changes
Inline
Side-by-side
RELNOTES
View file @
251bb4b9
...
...
@@ -144,7 +144,7 @@ by Eric Young (eay@cryptsoft.com).
freebsd, linux, macos, netbsd, openbsd.
[ISC-Bugs #36169]
- Modified DDNS support initialization such DNS related ports will only be
- Modified DDNS support initialization such
that
DNS related ports will only be
opened by the server (dhcpd) at startup if ddns-update-style is not "none";
by dhclient only if and when the it first attempts an update; and never by
dhcrelay. Prior to this all three always did the initialization at startup
...
...
@@ -157,6 +157,12 @@ by Eric Young (eay@cryptsoft.com).
Parker (wp02855 at gmail dot com) for reporting the issue.
[ISC-Bugs #41185]
- Corrected a dhclient -6 issue that caused the client to crash with an
"Impossible condition" error after de-preferencing its only IA binding.
The crash occurred when server configuration changes rendered the existing
binding out-of-range and no other leases were available to offer.
[ISC-Bugs #44373]
Changes since 4.3.0 (bug fixes)
- Tidy up several small tickets.
...
...
client/dhc6.c
View file @
251bb4b9
/* dhc6.c - DHCPv6 client routines. */
/*
* Copyright (c) 2012-201
6
by Internet Systems Consortium, Inc. ("ISC")
* Copyright (c) 2012-201
7
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
...
...
@@ -4364,6 +4364,7 @@ dhc6_check_times(struct client_state *client)
TIME
renew
=
MAX_TIME
,
rebind
=
MAX_TIME
,
depref
=
MAX_TIME
,
lo_expire
=
MAX_TIME
,
hi_expire
=
0
,
max_ia_starts
=
0
,
tmp
;
int
has_addrs
=
ISC_FALSE
;
int
has_preferred_addrs
=
ISC_FALSE
;
struct
timeval
tv
;
lease
=
client
->
active_lease
;
...
...
@@ -4392,6 +4393,10 @@ dhc6_check_times(struct client_state *client)
if
(
tmp
<
depref
)
depref
=
tmp
;
if
(
!
(
addr
->
flags
&
DHC6_ADDR_EXPIRED
))
{
has_preferred_addrs
=
ISC_TRUE
;
}
}
if
(
!
(
addr
->
flags
&
DHC6_ADDR_EXPIRED
))
{
...
...
@@ -4550,7 +4555,10 @@ dhc6_check_times(struct client_state *client)
break
;
default:
log_fatal
(
"Impossible condition at %s:%d."
,
MDL
);
if
(
has_preferred_addrs
)
{
log_fatal
(
"Impossible condition, state %d at %s:%d."
,
client
->
state
,
MDL
);
}
}
/* Separately, set a time at which we will depref and expire
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment