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 <wangxinpeng@uniontech.com>
This commit is contained in:
parent
0ae677c7b4
commit
aca4d4963a
1 changed files with 13 additions and 5 deletions
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue