summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Markwalder <tmark@isc.org>2015-06-26 16:05:03 -0400
committerThomas Markwalder <tmark@isc.org>2015-06-26 16:05:03 -0400
commit1aec5d9c96f60ed9046a43b44fcfdf0aac2e507f (patch)
tree0e272ded05f8b5ab92122f5ae5e6b95943fd8843
parent277e01c43e192a304d2081ebb1d7254caf12088b (diff)
downloadisc-dhcp-1aec5d9c96f60ed9046a43b44fcfdf0aac2e507f.tar.gz
[v4_1_esv] Correctly handled v6 lease file entries that do not match to a pool
Merged in rt39314.
-rw-r--r--RELNOTES9
-rw-r--r--server/confpars.c20
2 files changed, 19 insertions, 10 deletions
diff --git a/RELNOTES b/RELNOTES
index 0e083c5f..971ba072 100644
--- a/RELNOTES
+++ b/RELNOTES
@@ -117,8 +117,15 @@ by Eric Young (eay@cryptsoft.com).
lease file is corrupt in certain ways.
[ISC-Bugs #39760]
- Changes since 4.1-ESV-R11rc2
+- Corrected an issue in v6 lease file parsing. Prior to this, when encountering
+ a lease with an address for which no configured pool exists, the server was
+ declaring the lease file corrupt and incorrectly skipping over the subsequent
+ entry in the file. The server will now emit a log message indicating that
+ no pool was found for the address (or prefix) and correctly resume parsing
+ with the next entry in the lease file.
+ [ISC-Bugs #39314]
+ Changes since 4.1-ESV-R11rc2
- None
Changes since 4.1-ESV-R11rc1
diff --git a/server/confpars.c b/server/confpars.c
index cc95c6f4..f592a4e5 100644
--- a/server/confpars.c
+++ b/server/confpars.c
@@ -4495,9 +4495,10 @@ parse_ia_na_declaration(struct parse *cfile) {
&iaaddr->addr) != ISC_R_SUCCESS) {
inet_ntop(AF_INET6, &iaaddr->addr,
addr_buf, sizeof(addr_buf));
- parse_warn(cfile, "no pool found for address %s",
- addr_buf);
- return;
+ log_error("No pool found for IA_NA address %s",
+ addr_buf);
+ iasubopt_dereference(&iaaddr, MDL);
+ continue;
}
/* remove old information */
@@ -4885,9 +4886,10 @@ parse_ia_ta_declaration(struct parse *cfile) {
&iaaddr->addr) != ISC_R_SUCCESS) {
inet_ntop(AF_INET6, &iaaddr->addr,
addr_buf, sizeof(addr_buf));
- parse_warn(cfile, "no pool found for address %s",
- addr_buf);
- return;
+ log_error("No pool found for IA_TA address %s",
+ addr_buf);
+ iasubopt_dereference(&iaaddr, MDL);
+ continue;
}
/* remove old information */
@@ -5276,9 +5278,9 @@ parse_ia_pd_declaration(struct parse *cfile) {
&iapref->addr) != ISC_R_SUCCESS) {
inet_ntop(AF_INET6, &iapref->addr,
addr_buf, sizeof(addr_buf));
- parse_warn(cfile, "no pool found for address %s",
- addr_buf);
- return;
+ log_error("No pool found for prefix %s", addr_buf);
+ iasubopt_dereference(&iapref, MDL);
+ continue;
}
/* remove old information */