From 4ba3faac2cad5b12166dbe055ee775d48308441b Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Wed, 6 Jul 2011 17:09:40 -0600 Subject: [PATCH] xenapi: reject unknown flags * src/xenapi/xenapi_driver.c (xenapiOpen, xenapiDomainReboot): Reject unknown flags. (xenapiDomainGetXMLDesc): Likewise, and pass known flags through to XML generation. --- src/xenapi/xenapi_driver.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/xenapi/xenapi_driver.c b/src/xenapi/xenapi_driver.c index 4496d4aae6..aa616cab2b 100644 --- a/src/xenapi/xenapi_driver.c +++ b/src/xenapi/xenapi_driver.c @@ -92,12 +92,14 @@ getCapsObject (void) */ static virDrvOpenStatus xenapiOpen (virConnectPtr conn, virConnectAuthPtr auth, - unsigned int flags ATTRIBUTE_UNUSED) + unsigned int flags) { char *username = NULL; char *password = NULL; struct _xenapiPrivate *privP = NULL; + virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR); + if (conn->uri == NULL || conn->uri->scheme == NULL || STRCASENEQ(conn->uri->scheme, "XenAPI")) { return VIR_DRV_OPEN_DECLINED; @@ -804,12 +806,15 @@ xenapiDomainShutdown (virDomainPtr dom) * Returns 0 on success or -1 in case of error */ static int -xenapiDomainReboot (virDomainPtr dom, unsigned int flags ATTRIBUTE_UNUSED) +xenapiDomainReboot (virDomainPtr dom, unsigned int flags) { /* vm.clean_reboot */ xen_vm vm; struct xen_vm_set *vms; xen_session *session = ((struct _xenapiPrivate *)(dom->conn->privateData))->session; + + virCheckFlags(0, -1); + if (xen_vm_get_by_name_label(session, &vms, dom->name) && vms->size > 0) { if (vms->size != 1) { xenapiSessionErrorHandler(dom->conn, VIR_ERR_INTERNAL_ERROR, @@ -1297,7 +1302,7 @@ xenapiDomainGetMaxVcpus (virDomainPtr dom) * Returns XML string of the domain configuration on success or -1 in case of error */ static char * -xenapiDomainGetXMLDesc(virDomainPtr dom, unsigned int flags ATTRIBUTE_UNUSED) +xenapiDomainGetXMLDesc(virDomainPtr dom, unsigned int flags) { xen_vm vm=NULL; xen_vm_set *vms; @@ -1311,6 +1316,10 @@ xenapiDomainGetXMLDesc(virDomainPtr dom, unsigned int flags ATTRIBUTE_UNUSED) struct xen_vif_set *vif_set = NULL; char *xml; + virCheckFlags(VIR_DOMAIN_XML_SECURE | + VIR_DOMAIN_XML_INACTIVE | + VIR_DOMAIN_XML_UPDATE_CPU, NULL); + if (!xen_vm_get_by_name_label(session, &vms, dom->name)) return NULL; if (vms->size != 1) { xenapiSessionErrorHandler(dom->conn, VIR_ERR_INTERNAL_ERROR, @@ -1476,7 +1485,7 @@ xenapiDomainGetXMLDesc(virDomainPtr dom, unsigned int flags ATTRIBUTE_UNUSED) xen_vif_set_free(vif_set); } if (vms) xen_vm_set_free(vms); - xml = virDomainDefFormat(defPtr, 0); + xml = virDomainDefFormat(defPtr, flags); virDomainDefFree(defPtr); return xml; -- GitLab