]> git.ipfire.org Git - thirdparty/dhcp.git/commitdiff
Update the code to parse dhcpv6 lease files to accept a semi-colon at
authorShawn Routhier <sar@isc.org>
Wed, 13 Oct 2010 22:28:18 +0000 (22:28 +0000)
committerShawn Routhier <sar@isc.org>
Wed, 13 Oct 2010 22:28:18 +0000 (22:28 +0000)
the end of the max-life and preferred-life clauses.  In order to be
backwards compatible with older lease files not finding a semi-colon
is also accepted.  [ISC-Bugs #22303].

RELNOTES
server/confpars.c

index da1defd01e41b31246e96903b4192b8587e86de4..e9e4d1da761af54f03ac531ad33ce11f4b0aec4b 100644 (file)
--- a/RELNOTES
+++ b/RELNOTES
@@ -124,6 +124,11 @@ work on other platforms. Please report any problems and suggested fixes to
   [ISC-Bugs #20952] Add 64 bit types to configure.ac
   [ISC-Bugs #21308] Add "PATH=" to CLIENT_PATH envrionment variable
 
+- Update the code to parse dhcpv6 lease files to accept a semi-colon at
+  the end of the max-life and preferred-life clauses.  In order to be
+  backwards compatible with older lease files not finding a semi-colon
+  is also accepted.  [ISC-Bugs #22303].
+
                        Changes since 4.2.0b2
 
 - Add declaration for variable in debug code in alloc.c.  [ISC-Bugs #21472]
index 475db64ac6804d506a27c5fe3d73588c551d6d38..8dd3f624cba362af5c1a3b10e28ab71a53baab15 100644 (file)
@@ -3,7 +3,7 @@
    Parser for dhcpd config file... */
 
 /*
- * Copyright (c) 2004-2009 by Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (c) 2004-2010 by Internet Systems Consortium, Inc. ("ISC")
  * Copyright (c) 1995-2003 by Internet Software Consortium
  *
  * Permission to use, copy, modify, and distribute this software for any
@@ -4299,6 +4299,21 @@ parse_ia_na_declaration(struct parse *cfile) {
                                        continue;
                                }
                                prefer = atoi (val);
+
+                               /*
+                                * Currently we peek for the semi-colon to 
+                                * allow processing of older lease files that
+                                * don't have the semi-colon.  Eventually we
+                                * should remove the peeking code.
+                                */
+                               token = peek_token(&val, NULL, cfile);
+                               if (token == SEMI) {
+                                       token = next_token(&val, NULL, cfile);
+                               } else {
+                                       parse_warn(cfile,
+                                                  "corrupt lease file; "
+                                                  "expecting semicolon.");
+                               }
                                break;
 
                                /* Lease valid lifetime. */
@@ -4312,6 +4327,21 @@ parse_ia_na_declaration(struct parse *cfile) {
                                        continue;
                                }
                                valid = atoi (val);
+
+                               /*
+                                * Currently we peek for the semi-colon to 
+                                * allow processing of older lease files that
+                                * don't have the semi-colon.  Eventually we
+                                * should remove the peeking code.
+                                */
+                               token = peek_token(&val, NULL, cfile);
+                               if (token == SEMI) {
+                                       token = next_token(&val, NULL, cfile);
+                               } else {
+                                       parse_warn(cfile,
+                                                  "corrupt lease file; "
+                                                  "expecting semicolon.");
+                               }
                                break;
 
                                /* Lease expiration time. */
@@ -4632,6 +4662,21 @@ parse_ia_ta_declaration(struct parse *cfile) {
                                        continue;
                                }
                                prefer = atoi (val);
+
+                               /*
+                                * Currently we peek for the semi-colon to 
+                                * allow processing of older lease files that
+                                * don't have the semi-colon.  Eventually we
+                                * should remove the peeking code.
+                                */
+                               token = peek_token(&val, NULL, cfile);
+                               if (token == SEMI) {
+                                       token = next_token(&val, NULL, cfile);
+                               } else {
+                                       parse_warn(cfile,
+                                                  "corrupt lease file; "
+                                                  "expecting semicolon.");
+                               }
                                break;
 
                                /* Lease valid lifetime. */
@@ -4645,6 +4690,21 @@ parse_ia_ta_declaration(struct parse *cfile) {
                                        continue;
                                }
                                valid = atoi (val);
+
+                               /*
+                                * Currently we peek for the semi-colon to 
+                                * allow processing of older lease files that
+                                * don't have the semi-colon.  Eventually we
+                                * should remove the peeking code.
+                                */
+                               token = peek_token(&val, NULL, cfile);
+                               if (token == SEMI) {
+                                       token = next_token(&val, NULL, cfile);
+                               } else {
+                                       parse_warn(cfile,
+                                                  "corrupt lease file; "
+                                                  "expecting semicolon.");
+                               }
                                break;
 
                                /* Lease expiration time. */
@@ -4966,6 +5026,21 @@ parse_ia_pd_declaration(struct parse *cfile) {
                                        continue;
                                }
                                prefer = atoi (val);
+
+                               /*
+                                * Currently we peek for the semi-colon to 
+                                * allow processing of older lease files that
+                                * don't have the semi-colon.  Eventually we
+                                * should remove the peeking code.
+                                */
+                               token = peek_token(&val, NULL, cfile);
+                               if (token == SEMI) {
+                                       token = next_token(&val, NULL, cfile);
+                               } else {
+                                       parse_warn(cfile,
+                                                  "corrupt lease file; "
+                                                  "expecting semicolon.");
+                               }
                                break;
 
                                /* Lease valid lifetime. */
@@ -4979,6 +5054,21 @@ parse_ia_pd_declaration(struct parse *cfile) {
                                        continue;
                                }
                                valid = atoi (val);
+
+                               /*
+                                * Currently we peek for the semi-colon to 
+                                * allow processing of older lease files that
+                                * don't have the semi-colon.  Eventually we
+                                * should remove the peeking code.
+                                */
+                               token = peek_token(&val, NULL, cfile);
+                               if (token == SEMI) {
+                                       token = next_token(&val, NULL, cfile);
+                               } else {
+                                       parse_warn(cfile,
+                                                  "corrupt lease file; "
+                                                  "expecting semicolon.");
+                               }
                                break;
 
                                /* Prefix expiration time. */