diff options
author | Shawn Routhier <sar@isc.org> | 2010-10-13 22:28:18 +0000 |
---|---|---|
committer | Shawn Routhier <sar@isc.org> | 2010-10-13 22:28:18 +0000 |
commit | ad59838e339449b388bb65b98703ab94719bacb3 (patch) | |
tree | 824876834666e1abcec0e858a58b2dfce1d7ead8 /server/confpars.c | |
parent | 5484ac9e3a81ea25adffff70c7ad9b0624146668 (diff) | |
download | isc-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.c | 92 |
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. */ |