On Fri, Apr 24, 2020 at 10:02:49 -0500, Eric Blake wrote:
On 4/24/20 7:04 AM, Peter Krempa wrote:
Our implementation wasn't quite able to parse everything that qemu does. This patch rewrites the parser to a code that semantically resembles the combination of 'nbd_parse_filename' and 'inet_parse' methods in qemu to be able to parse the strings in an equivalent manner.
The only thing that libvirt doesn't do is to check the lenghts of
lengths
various components in the nbd string in places where qemu uses constant size buffers.
The test cases validate that some of the corner cases involving colons are parsed properly.
https://bugzilla.redhat.com/show_bug.cgi?id=1826652
Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/util/virstoragefile.c | 90 +++++++++++++++++++++++---------------- tests/virstoragetest.c | 16 +++++++ 2 files changed, 70 insertions(+), 36 deletions(-)
+ TEST_BACKING_PARSE("nbd:unix:/tmp/sock::exportname=:", + "<source protocol='nbd' name=':'>\n" + " <host transport='unix' socket='/tmp/sock:'/>\n" + "</source>\n");
nbd+unix:///:?socket=/tmp/sock:
Whether you also add the proper URI counterparts to the test is not directly relevant to the fix at hand.
I can add them but separately. The URIs are parsed via the libxml URI module so they are not related in any way to the colon-delimited string code-wise.