[PATCH 3/3] config: treat section case insensitive in store_aux_event

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 <sbeller@xxxxxxxxxx>
---
 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




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux