提交 f6dd410d 编写于 作者: P Peter Krempa 提交者: Cole Robinson

util: storage: Fix parsing of nbd:// URI without path

If a storage file would be backed with a NBD device without path
(nbd://localhost) libvirt would crash when parsing the backing path for
the disk as the URI structure's path element is NULL in such case but
the NBD parser would access it shamelessly.

(cherry picked from commit fdb80ed4)
上级 e2267726
......@@ -2166,7 +2166,8 @@ virStorageSourceParseBackingURI(virStorageSourcePtr src,
/* XXX We currently don't support auth, so don't bother parsing it */
/* possibly skip the leading slash */
if (VIR_STRDUP(src->path,
if (uri->path &&
VIR_STRDUP(src->path,
*uri->path == '/' ? uri->path + 1 : uri->path) < 0)
goto cleanup;
......
......@@ -854,6 +854,20 @@ mymain(void)
(&qcow2, &nbd2), EXP_PASS,
(&qcow2, &nbd2), ALLOW_PROBE | EXP_PASS);
/* Rewrite qcow2 to use an nbd: protocol without path as backend */
virCommandFree(cmd);
cmd = virCommandNewArgList(qemuimg, "rebase", "-u", "-f", "qcow2",
"-F", "raw", "-b", "nbd://example.org",
"qcow2", NULL);
if (virCommandRun(cmd, NULL) < 0)
ret = -1;
qcow2.expBackingStoreRaw = "nbd://example.org";
nbd2.path = NULL;
TEST_CHAIN(20, absqcow2, VIR_STORAGE_FILE_QCOW2,
(&qcow2, &nbd2), EXP_PASS,
(&qcow2, &nbd2), ALLOW_PROBE | EXP_PASS);
/* qed file */
testFileData qed = {
.expBackingStoreRaw = absraw,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册