From: xinpeng wang Date: Tue, 14 Sep 2021 05:09:20 +0000 (+0800) Subject: Fix handling of complex configuration lines with mixed "" and # X-Git-Tag: hostap_2_10~112 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=aca4d4963a65e49614ed8cd52836a2619775c1f6;p=thirdparty%2Fhostap.git Fix handling of complex configuration lines with mixed "" and # The original code wants to remove # comments unless they are within a double quoted string, but it doesn’t consider the "" after #, for example in the following line: a=b #"a=c" Signed-off-by: xinpeng wang --- diff --git a/src/utils/config.c b/src/utils/config.c index 22aa2216e..ba26c2c9a 100644 --- a/src/utils/config.c +++ b/src/utils/config.c @@ -66,12 +66,20 @@ char * wpa_config_get_line(char *s, int size, FILE *stream, int *line, * Remove # comments unless they are within a double quoted * string. */ - sstart = os_strchr(pos, '"'); - if (sstart) - sstart = os_strrchr(sstart + 1, '"'); - if (!sstart) - sstart = pos; + sstart = pos; end = os_strchr(sstart, '#'); + while (end) { + sstart = os_strchr(sstart, '"'); + if (!sstart || sstart > end) + break; + sstart = os_strchr(sstart + 1, '"'); + if (!sstart) + break; + sstart++; + if (sstart > end) + end = os_strchr(sstart, '#'); + } + if (end) *end-- = '\0'; else