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(a)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.