提交 cba4868a 编写于 作者: D Daniel P. Berrange

Check return value of virDomainControllerInsert when parsing QEMU args

The parsing of '-usb' did not check for failure of the
virDomainControllerInsert method. As a result on OOM, the
parser mistakenly attached USB disks to the IDE controller.
Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
上级 b81f3056
...@@ -2361,7 +2361,8 @@ int virDomainDiskIndexByName(virDomainDefPtr def, const char *name, ...@@ -2361,7 +2361,8 @@ int virDomainDiskIndexByName(virDomainDefPtr def, const char *name,
bool allow_ambiguous); bool allow_ambiguous);
const char *virDomainDiskPathByName(virDomainDefPtr, const char *name); const char *virDomainDiskPathByName(virDomainDefPtr, const char *name);
int virDomainDiskInsert(virDomainDefPtr def, int virDomainDiskInsert(virDomainDefPtr def,
virDomainDiskDefPtr disk); virDomainDiskDefPtr disk)
ATTRIBUTE_RETURN_CHECK;
void virDomainDiskInsertPreAlloced(virDomainDefPtr def, void virDomainDiskInsertPreAlloced(virDomainDefPtr def,
virDomainDiskDefPtr disk); virDomainDiskDefPtr disk);
int virDomainDiskDefAssignAddress(virDomainXMLOptionPtr xmlopt, int virDomainDiskDefAssignAddress(virDomainXMLOptionPtr xmlopt,
...@@ -2415,7 +2416,8 @@ virDomainNetGetActualBandwidth(virDomainNetDefPtr iface); ...@@ -2415,7 +2416,8 @@ virDomainNetGetActualBandwidth(virDomainNetDefPtr iface);
virNetDevVlanPtr virDomainNetGetActualVlan(virDomainNetDefPtr iface); virNetDevVlanPtr virDomainNetGetActualVlan(virDomainNetDefPtr iface);
int virDomainControllerInsert(virDomainDefPtr def, int virDomainControllerInsert(virDomainDefPtr def,
virDomainControllerDefPtr controller); virDomainControllerDefPtr controller)
ATTRIBUTE_RETURN_CHECK;
void virDomainControllerInsertPreAlloced(virDomainDefPtr def, void virDomainControllerInsertPreAlloced(virDomainDefPtr def,
virDomainControllerDefPtr controller); virDomainControllerDefPtr controller);
int virDomainControllerFind(virDomainDefPtr def, int type, int idx); int virDomainControllerFind(virDomainDefPtr def, int type, int idx);
...@@ -2425,7 +2427,8 @@ int virDomainLeaseIndex(virDomainDefPtr def, ...@@ -2425,7 +2427,8 @@ int virDomainLeaseIndex(virDomainDefPtr def,
virDomainLeaseDefPtr lease); virDomainLeaseDefPtr lease);
int virDomainLeaseInsert(virDomainDefPtr def, int virDomainLeaseInsert(virDomainDefPtr def,
virDomainLeaseDefPtr lease); virDomainLeaseDefPtr lease);
int virDomainLeaseInsertPreAlloc(virDomainDefPtr def); int virDomainLeaseInsertPreAlloc(virDomainDefPtr def)
ATTRIBUTE_RETURN_CHECK;
void virDomainLeaseInsertPreAlloced(virDomainDefPtr def, void virDomainLeaseInsertPreAlloced(virDomainDefPtr def,
virDomainLeaseDefPtr lease); virDomainLeaseDefPtr lease);
virDomainLeaseDefPtr virDomainLeaseDefPtr
......
...@@ -11624,7 +11624,8 @@ qemuParseCommandLine(virCapsPtr qemuCaps, ...@@ -11624,7 +11624,8 @@ qemuParseCommandLine(virCapsPtr qemuCaps,
ctldef->type = VIR_DOMAIN_CONTROLLER_TYPE_USB; ctldef->type = VIR_DOMAIN_CONTROLLER_TYPE_USB;
ctldef->idx = 0; ctldef->idx = 0;
ctldef->model = -1; ctldef->model = -1;
virDomainControllerInsert(def, ctldef); if (virDomainControllerInsert(def, ctldef) < 0)
goto error;
} else if (STREQ(arg, "-pidfile")) { } else if (STREQ(arg, "-pidfile")) {
WANT_VALUE(); WANT_VALUE();
if (pidfile) if (pidfile)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册