summaryrefslogtreecommitdiff
path: root/server/confpars.c
diff options
context:
space:
mode:
authorShawn Routhier <sar@isc.org>2010-10-13 22:28:18 +0000
committerShawn Routhier <sar@isc.org>2010-10-13 22:28:18 +0000
commitad59838e339449b388bb65b98703ab94719bacb3 (patch)
tree824876834666e1abcec0e858a58b2dfce1d7ead8 /server/confpars.c
parent5484ac9e3a81ea25adffff70c7ad9b0624146668 (diff)
downloadisc-dhcp-ad59838e339449b388bb65b98703ab94719bacb3.tar.gz
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].
Diffstat (limited to 'server/confpars.c')
-rw-r--r--server/confpars.c92
1 files changed, 91 insertions, 1 deletions
diff --git a/server/confpars.c b/server/confpars.c
index 475db64a..8dd3f624 100644
--- a/server/confpars.c
+++ b/server/confpars.c
@@ -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. */