[libvirt] [PATCH] util: storage: Fix parsing of 'exportname' from legacy NBD strings

Peter Krempa posted 1 patch 4 years, 8 months ago
Test syntax-check passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/a6cc29a92cb17c13f2b5fc0c53c73c1123f4850a.1564586568.git.pkrempa@redhat.com
src/util/virstoragefile.c | 6 ++++--
tests/virstoragetest.c    | 8 ++++++++
2 files changed, 12 insertions(+), 2 deletions(-)
[libvirt] [PATCH] util: storage: Fix parsing of 'exportname' from legacy NBD strings
Posted by Peter Krempa 4 years, 8 months ago
If the nbd export name contains a colon, our parser would not parse it
properly as we split the string by colons. Modify the code to look up
the exportname and copy any trailing characters as the export name is
supposed to be at the end of the string.

https://bugzilla.redhat.com/show_bug.cgi?id=1733044

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
---
 src/util/virstoragefile.c | 6 ++++--
 tests/virstoragetest.c    | 8 ++++++++
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
index a6de6a1e45..ffafeef9d8 100644
--- a/src/util/virstoragefile.c
+++ b/src/util/virstoragefile.c
@@ -2928,6 +2928,7 @@ virStorageSourceParseNBDColonString(const char *nbdstr,
                                     virStorageSourcePtr src)
 {
     VIR_AUTOSTRINGLIST backing = NULL;
+    const char *exportname;

     if (!(backing = virStringSplit(nbdstr, ":", 0)))
         return -1;
@@ -2975,8 +2976,9 @@ virStorageSourceParseNBDColonString(const char *nbdstr,
             return -1;
     }

-    if (backing[3] && STRPREFIX(backing[3], "exportname=")) {
-        if (VIR_STRDUP(src->path, backing[3] + strlen("exportname=")) < 0)
+    if ((exportname = strstr(nbdstr, "exportname="))) {
+        exportname += strlen("exportname=");
+        if (VIR_STRDUP(src->path, exportname) < 0)
             return -1;
     }

diff --git a/tests/virstoragetest.c b/tests/virstoragetest.c
index ef16b3c6e0..f558eea622 100644
--- a/tests/virstoragetest.c
+++ b/tests/virstoragetest.c
@@ -1262,6 +1262,14 @@ mymain(void)
                        "<source protocol='nbd' name='blah'>\n"
                        "  <host name='example.org' port='6000'/>\n"
                        "</source>\n");
+    TEST_BACKING_PARSE("nbd:example.org:6000:exportname=:",
+                       "<source protocol='nbd' name=':'>\n"
+                       "  <host name='example.org' port='6000'/>\n"
+                       "</source>\n");
+    TEST_BACKING_PARSE("nbd:example.org:6000:exportname=:test",
+                       "<source protocol='nbd' name=':test'>\n"
+                       "  <host name='example.org' port='6000'/>\n"
+                       "</source>\n");
     TEST_BACKING_PARSE("nbd://example.org:1234",
                        "<source protocol='nbd'>\n"
                        "  <host name='example.org' port='1234'/>\n"
-- 
2.21.0

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH] util: storage: Fix parsing of 'exportname' from legacy NBD strings
Posted by Peter Krempa 4 years, 8 months ago
On Wed, Jul 31, 2019 at 17:22:48 +0200, Peter Krempa wrote:
> If the nbd export name contains a colon, our parser would not parse it
> properly as we split the string by colons. Modify the code to look up
> the exportname and copy any trailing characters as the export name is
> supposed to be at the end of the string.
> 
> https://bugzilla.redhat.com/show_bug.cgi?id=1733044
> 
> Signed-off-by: Peter Krempa <pkrempa@redhat.com>
> ---
>  src/util/virstoragefile.c | 6 ++++--
>  tests/virstoragetest.c    | 8 ++++++++
>  2 files changed, 12 insertions(+), 2 deletions(-)

Ping?
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH] util: storage: Fix parsing of 'exportname' from legacy NBD strings
Posted by Jiri Denemark 4 years, 8 months ago
On Wed, Jul 31, 2019 at 17:22:48 +0200, Peter Krempa wrote:
> If the nbd export name contains a colon, our parser would not parse it
> properly as we split the string by colons. Modify the code to look up
> the exportname and copy any trailing characters as the export name is
> supposed to be at the end of the string.
> 
> https://bugzilla.redhat.com/show_bug.cgi?id=1733044
> 
> Signed-off-by: Peter Krempa <pkrempa@redhat.com>
> ---
>  src/util/virstoragefile.c | 6 ++++--
>  tests/virstoragetest.c    | 8 ++++++++
>  2 files changed, 12 insertions(+), 2 deletions(-)

Reviewed-by: Jiri Denemark <jdenemar@redhat.com>

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list