Fix for parsing multipath.conf files without spaces before brackets
Benjamin Marzinski
maintainerPATCH 4/6 Fix for parsing multipath.conf files without spaces before brackets
There's a bug in bug in the multipath.conf code that keeps multipath from correctly parsing config files where there is no space between a section name and the opening bracket. For instance
devices {
device {
...
}
}works but
devices {
device{
...
}
}doesn't. This patch makes sure that brackets are the recognized as seperate from the token that they follow, unless they are part of a quoted string.
Signed-off-by Benjamin Marzinski <[email protected]>
--- libmultipath/parser.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-)
libmultipath/parser.c +10 -2
@@ -239,12 +239,20 @@ alloc_strvec(char *string) in_string =0 ; else in_string =1 ; + }else if (!in_string && (*cp =='{' || *cp =='}' )) { + token =MALLOC (2 ); +if (!token) + goto out; + + *(token) = *cp; + *(token +1 ) ='\0' ; + cp++; }else {while ((in_string || (!isspace ((int ) *cp) &&isascii ((int ) *cp) && - *cp !='!' && *cp !='#' )) && - *cp !='\0' && *cp !='"' ) + *cp !='!' && *cp !='#' && *cp !='{' && + *cp !='}' )) && *cp !='\0' && *cp !='"' ) cp++; strlen = cp - start; token =MALLOC (strlen +1 );