[PATCH] Fix the bug of handling complex configuration lines with mixed "" and #

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

 



The original code wants to Remove # comments unless they are within a double quoted string, but it doesn’t consider the "" after #,
for example a=b #"a=c"

Signed-off-by: xinpeng wang <wangxinpeng@xxxxxxxxxxxxx>
---
 src/utils/config.c | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/src/utils/config.c b/src/utils/config.c
index 22aa2216e..ec4fa9a59 100644
--- a/src/utils/config.c
+++ b/src/utils/config.c
@@ -66,12 +66,21 @@ 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
-- 
2.20.1




_______________________________________________
Hostap mailing list
Hostap@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/hostap




[Index of Archives]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux