提交 9249187f 编写于 作者: P Peter Krempa

qemu: block: Don't leak server JSON object from protocol generators

If creation of the main JSON object containing the storage portion of a
virStorageSource would fail but we'd allocate the server structure we'd
leak it. Found by coverity.
上级 bb15ac45
......@@ -833,13 +833,18 @@ qemuBlockStorageSourceGetNBDProps(virStorageSourcePtr src)
if (!serverprops)
return NULL;
ignore_value(virJSONValueObjectCreate(&ret,
"s:driver", "nbd",
"a:server", serverprops,
"S:export", src->path,
"S:tls-creds", src->tlsAlias,
NULL));
if (virJSONValueObjectCreate(&ret,
"s:driver", "nbd",
"a:server", serverprops,
"S:export", src->path,
"S:tls-creds", src->tlsAlias,
NULL) < 0)
goto cleanup;
serverprops = NULL;
cleanup:
virJSONValueFree(serverprops);
return ret;
}
......@@ -859,16 +864,21 @@ qemuBlockStorageSourceGetRBDProps(virStorageSourcePtr src)
if (src->auth)
username = srcPriv->secinfo->s.aes.username;
ignore_value(virJSONValueObjectCreate(&ret,
"s:driver", "rbd",
"s:pool", src->volume,
"s:image", src->path,
"S:snapshot", src->snapshot,
"S:conf", src->configFile,
"A:server", servers,
"S:user", username,
NULL));
if (virJSONValueObjectCreate(&ret,
"s:driver", "rbd",
"s:pool", src->volume,
"s:image", src->path,
"S:snapshot", src->snapshot,
"S:conf", src->configFile,
"A:server", servers,
"S:user", username,
NULL) < 0)
goto cleanup;
servers = NULL;
cleanup:
virJSONValueFree(servers);
return ret;
}
......@@ -891,12 +901,17 @@ qemuBlockStorageSourceGetSheepdogProps(virStorageSourcePtr src)
return NULL;
/* libvirt does not support the 'snap-id' and 'tag' properties */
ignore_value(virJSONValueObjectCreate(&ret,
"s:driver", "sheepdog",
"a:server", serverprops,
"s:vdi", src->path,
NULL));
if (virJSONValueObjectCreate(&ret,
"s:driver", "sheepdog",
"a:server", serverprops,
"s:vdi", src->path,
NULL) < 0)
goto cleanup;
serverprops = NULL;
cleanup:
virJSONValueFree(serverprops);
return ret;
}
......@@ -921,13 +936,18 @@ qemuBlockStorageSourceGetSshProps(virStorageSourcePtr src)
if (src->auth)
username = src->auth->username;
ignore_value(virJSONValueObjectCreate(&ret,
"s:driver", "ssh",
"s:path", src->path,
"a:server", serverprops,
"S:user", username,
NULL));
if (virJSONValueObjectCreate(&ret,
"s:driver", "ssh",
"s:path", src->path,
"a:server", serverprops,
"S:user", username,
NULL) < 0)
goto cleanup;
serverprops = NULL;
cleanup:
virJSONValueFree(serverprops);
return ret;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册