Thanks to a report from Jiri Popelka at Red Hat.
[ISC-Bugs #22033], [Red Hat Bug #628258]
+- When processing the format flags for a given option consume the
+ flag indicating an optional value correctly. A symptom of this
+ bug was an infinite loop when trying to parse the slp-service-scope
+ option. Thanks to a patch from Marius Tomaschewski.
+ [ISC-Bugs #22055]
+
Changes since 4.2.0b2
- Add declaration for variable in debug code in alloc.c. [ISC-Bugs #21472]
- Fix a bug in the DHCP client initial startup backoff interval, which
would cause two DHCPDISCOVERS to be sent back-to-back on startup.
-
Changes since 3.0 Beta 2 Patchlevel 15
- Some documentation tweaks.
do {
if ((*fmt == 'A') || (*fmt == 'a'))
break;
- if (*fmt == 'o')
+ if (*fmt == 'o') {
+ /* consume the optional flag */
+ fmt++;
continue;
+ }
+
+ if (fmt[1] == 'o') {
+ /*
+ * A value for the current format is
+ * optional - check to see if the next
+ * token is a semi-colon if so we don't
+ * need to parse it and doing so would
+ * consume the semi-colon which our
+ * caller is expecting to parse
+ */
+ token = peek_token(&val, (unsigned *)0,
+ cfile);
+ if (token == SEMI) {
+ fmt++;
+ continue;
+ }
+ }
tmp = *expr;
*expr = NULL;