mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-21 19:02:25 +00:00
util: storage: Fix parsing of 'exportname' from legacy NBD strings
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> Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
This commit is contained in:
parent
5726e47234
commit
96f0a17ead
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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"
|
||||
|
Loading…
x
Reference in New Issue
Block a user