Two years ago I modified the parsing for [section] labels for the
config file's CHOOSE directive to allow end-of-line comments, but
the code used had a logic error (don't think I can blame it on
copy+paste). It looked for '#' after ']' but allowed anything--
rather than just spaces--in between.
"[section-name]abc#comment" would become "section-name" as if the
trailing junk hadn't been present. Parsing that should produce
"section-name]abc" and get rejected as invalid.
with spaces optional; returns pointer to "anything-except..." (with
trailing " ] #..." stripped) if ok, otherwise Null */
static char *
-is_config_section(char *str) /* trailing spaces will be stripped,
- ']' too iff result is good */
+is_config_section(
+ char *str) /* trailing spaces are stripped, ']' too iff result is good */
{
char *a, *c, *z;
z = index(a, ']');
if (!z)
return (char *) 0;
- for (c = z + 1; *c && *c != '#'; ++c)
+ /* comment, if present, can be preceded by spaces */
+ for (c = z + 1; *c == ' '; ++c)
continue;
if (*c && *c != '#')
return (char *) 0;