This is a no-op because the section names are lower-cased already in
get_base_var, this is purely for demonstration that we do not need to
care about case issues in this part of the code.

Signed-off-by: Stefan Beller <sbel...@google.com>
---
 config.c | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/config.c b/config.c
index de646d2c56f..c247164ad17 100644
--- a/config.c
+++ b/config.c
@@ -2355,14 +2355,28 @@ static int store_aux_event(enum config_event_t type,
        store->parsed[store->parsed_nr].type = type;
 
        if (type == CONFIG_EVENT_SECTION) {
+               char *p;
+               int slen; /* section length */
                if (cf->var.len < 2 || cf->var.buf[cf->var.len - 1] != '.')
                        return error("invalid section name '%s'", cf->var.buf);
 
+               p = strchr(cf->var.buf, '.');
+               if (!p)
+                       /* no subsection, so treat all as section: */
+                       slen = store->baselen;
+               else
+                       slen = p - cf->var.buf;
+
+               if (slen > store->baselen)
+                       slen = store->baselen;
+
                /* Is this the section we were looking for? */
                store->is_keys_section =
                        store->parsed[store->parsed_nr].is_keys_section =
                        cf->var.len - 1 == store->baselen &&
-                       !strncmp(cf->var.buf, store->key, store->baselen);
+                       !strncasecmp(cf->var.buf, store->key, slen) &&
+                       !strncmp(cf->var.buf + slen, store->key + slen,
+                                store->baselen - slen);
                if (store->is_keys_section) {
                        store->section_seen = 1;
                        ALLOC_GROW(store->seen, store->seen_nr + 1,
-- 
2.18.0.132.g195c49a2227

Reply via email to