]> git.ipfire.org Git - thirdparty/dhcp.git/commitdiff
[v4_1_esv] Correctly handled v6 lease file entries that do not match to a pool
authorThomas Markwalder <tmark@isc.org>
Fri, 26 Jun 2015 20:05:03 +0000 (16:05 -0400)
committerThomas Markwalder <tmark@isc.org>
Fri, 26 Jun 2015 20:05:03 +0000 (16:05 -0400)
   Merged in rt39314.

RELNOTES
server/confpars.c

index 0e083c5fb8e2a6188b6845ab6ee32e9b8450754a..971ba072297c52af12f995f9b150e00548ac88d7 100644 (file)
--- 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
index cc95c6f486c04b444588bea4931619f8abbb8aa6..f592a4e5cc647520df12aa879dd67694cd79f824 100644 (file)
@@ -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 */