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

RELNOTES
server/confpars.c

index c6707fe7cdc7e3dc4e41164d54a11a511cfc11ec..aa51fff3f433e8a1815d8b0047566925db493fc8 100644 (file)
--- a/RELNOTES
+++ b/RELNOTES
@@ -140,6 +140,14 @@ by Eric Young (eay@cryptsoft.com).
   for the bug report.
   [ISC-Bugs #38639]
 
+- 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.3.2rc2
 - None
 
index 415a38bee8bbab4809145183fa4ed1470e383e22..d55345491a78b65d30b7065f040e61e2c7e49eed 100644 (file)
@@ -4955,9 +4955,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 */
@@ -5406,9 +5407,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 */
@@ -5858,9 +5860,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 */