From 1aec5d9c96f60ed9046a43b44fcfdf0aac2e507f Mon Sep 17 00:00:00 2001 From: Thomas Markwalder Date: Fri, 26 Jun 2015 16:05:03 -0400 Subject: [PATCH] [v4_1_esv] Correctly handled v6 lease file entries that do not match to a pool Merged in rt39314. --- RELNOTES | 9 ++++++++- server/confpars.c | 20 +++++++++++--------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/RELNOTES b/RELNOTES index 0e083c5fb..971ba0722 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 cc95c6f48..f592a4e5c 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 */ -- 2.47.3