libmultipath: config parser: fix corner case for double quotes
authorMartin Wilck <mwilck@suse.com>
Wed, 7 Mar 2018 23:26:19 +0000 (00:26 +0100)
committerChristophe Varoqui <christophe.varoqui@opensvc.com>
Sat, 10 Mar 2018 07:24:15 +0000 (08:24 +0100)
commit7d95fb625b96b906dcdcbe0fdc616f49fe9ed49e
tree4c4c50d809c0f7efe6b915a00cf62c8b2d61a137
parent044c5d6b942a22571b3e708647c6fa9157f93c52
libmultipath: config parser: fix corner case for double quotes

A corner case of the previous patch are strings starting with a double quote,
such as '"prepended to itself is false" prepended to itself is false' or
'"" is the empty string', and in particular, the string '"' ("\"" in C
notation), which is indistinguishable from the "QUOTE" token in the parsed strvec.

This patch fixes that by introducing a special token that can't occur as part
of a normal string to indicate the beginning and end of a quoted string.

'"' is admittedly not a very likely keyword value for multipath.conf, but
a) this is a matter of correctness, b) we didn't think of '2.5"' before, either, and
c) the (*str != '"') expressions would need to be patched anyway to fix the
'string starting with "' case.

Signed-off-by: Martin Wilck <mwilck@suse.com>
libmultipath/parser.c
libmultipath/parser.h
multipathd/cli.c
tests/parser.c