提交 6768b210 编写于 作者: S Stefan Berger 提交者: Stefan Berger

BZ1072677: Avoid freeing of 0 file descriptor

Avoid the freeing of an array of zero file descriptors in case
of error. Initialize the array to -1 using memset.
Signed-off-by: NStefan Berger <stefanb@linux.vnet.ibm.com>
上级 ed839f9a
...@@ -874,9 +874,12 @@ int qemuDomainAttachNetDevice(virConnectPtr conn, ...@@ -874,9 +874,12 @@ int qemuDomainAttachNetDevice(virConnectPtr conn,
tapfdSize = vhostfdSize = net->driver.virtio.queues; tapfdSize = vhostfdSize = net->driver.virtio.queues;
if (!tapfdSize) if (!tapfdSize)
tapfdSize = vhostfdSize = 1; tapfdSize = vhostfdSize = 1;
if (VIR_ALLOC_N(tapfd, tapfdSize) < 0 || if (VIR_ALLOC_N(tapfd, tapfdSize) < 0)
VIR_ALLOC_N(vhostfd, vhostfdSize) < 0)
goto cleanup; goto cleanup;
memset(tapfd, -1, sizeof(*tapfd) * tapfdSize);
if (VIR_ALLOC_N(vhostfd, vhostfdSize) < 0)
goto cleanup;
memset(vhostfd, -1, sizeof(*vhostfd) * vhostfdSize);
if (qemuNetworkIfaceConnect(vm->def, conn, driver, net, if (qemuNetworkIfaceConnect(vm->def, conn, driver, net,
priv->qemuCaps, tapfd, &tapfdSize) < 0) priv->qemuCaps, tapfd, &tapfdSize) < 0)
goto cleanup; goto cleanup;
...@@ -885,8 +888,12 @@ int qemuDomainAttachNetDevice(virConnectPtr conn, ...@@ -885,8 +888,12 @@ int qemuDomainAttachNetDevice(virConnectPtr conn,
goto cleanup; goto cleanup;
} else if (actualType == VIR_DOMAIN_NET_TYPE_DIRECT) { } else if (actualType == VIR_DOMAIN_NET_TYPE_DIRECT) {
tapfdSize = vhostfdSize = 1; tapfdSize = vhostfdSize = 1;
if (VIR_ALLOC(tapfd) < 0 || VIR_ALLOC(vhostfd) < 0) if (VIR_ALLOC(tapfd) < 0)
goto cleanup;
*tapfd = -1;
if (VIR_ALLOC(vhostfd) < 0)
goto cleanup; goto cleanup;
*vhostfd = -1;
if ((tapfd[0] = qemuPhysIfaceConnect(vm->def, driver, net, if ((tapfd[0] = qemuPhysIfaceConnect(vm->def, driver, net,
priv->qemuCaps, priv->qemuCaps,
VIR_NETDEV_VPORT_PROFILE_OP_CREATE)) < 0) VIR_NETDEV_VPORT_PROFILE_OP_CREATE)) < 0)
...@@ -898,6 +905,7 @@ int qemuDomainAttachNetDevice(virConnectPtr conn, ...@@ -898,6 +905,7 @@ int qemuDomainAttachNetDevice(virConnectPtr conn,
vhostfdSize = 1; vhostfdSize = 1;
if (VIR_ALLOC(vhostfd) < 0) if (VIR_ALLOC(vhostfd) < 0)
goto cleanup; goto cleanup;
*vhostfd = -1;
if (qemuOpenVhostNet(vm->def, net, priv->qemuCaps, vhostfd, &vhostfdSize) < 0) if (qemuOpenVhostNet(vm->def, net, priv->qemuCaps, vhostfd, &vhostfdSize) < 0)
goto cleanup; goto cleanup;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册