]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
flags: use common dumpxml flags check
authorEric Blake <eblake@redhat.com>
Wed, 13 Jul 2011 22:24:38 +0000 (16:24 -0600)
committerEric Blake <eblake@redhat.com>
Fri, 15 Jul 2011 18:22:20 +0000 (12:22 -0600)
The previous patches only cleaned up ATTRIBUTE_UNUSED flags cases;
auditing the drivers found other places where flags was being used
but not validated.  In particular, domainGetXMLDesc had issues with
clients accepting a different set of flags than the common
virDomainDefFormat helper function.

* src/conf/domain_conf.c (virDomainDefFormat): Add common flag check.
* src/uml/uml_driver.c (umlDomainAttachDeviceFlags)
(umlDomainDetachDeviceFlags): Reject unknown
flags.
* src/vbox/vbox_tmpl.c (vboxDomainGetXMLDesc)
(vboxDomainAttachDeviceFlags)
(vboxDomainDetachDeviceFlags): Likewise.
* src/qemu/qemu_driver.c (qemudDomainMemoryPeek): Likewise.
(qemuDomainGetXMLDesc): Document common flag handling.
* src/libxl/libxl_driver.c (libxlDomainGetXMLDesc): Likewise.
* src/lxc/lxc_driver.c (lxcDomainGetXMLDesc): Likewise.
* src/openvz/openvz_driver.c (openvzDomainGetXMLDesc): Likewise.
* src/phyp/phyp_driver.c (phypDomainGetXMLDesc): Likewise.
* src/test/test_driver.c (testDomainGetXMLDesc): Likewise.
* src/vmware/vmware_driver.c (vmwareDomainGetXMLDesc): Likewise.
* src/xenapi/xenapi_driver.c (xenapiDomainGetXMLDesc): Likewise.

src/conf/domain_conf.c
src/libxl/libxl_driver.c
src/lxc/lxc_driver.c
src/openvz/openvz_driver.c
src/phyp/phyp_driver.c
src/qemu/qemu_driver.c
src/test/test_driver.c
src/uml/uml_driver.c
src/vbox/vbox_tmpl.c
src/vmware/vmware_driver.c
src/xenapi/xenapi_driver.c

index a78996fbb8cb4013027db41ea973e3f3a520b950..788981f93ee006f76fb897bdb273de05441c7a47 100644 (file)
@@ -9624,6 +9624,10 @@ char *virDomainDefFormat(virDomainDefPtr def,
     const char *type = NULL;
     int n, allones = 1;
 
+    virCheckFlags(VIR_DOMAIN_XML_SECURE |
+                  VIR_DOMAIN_XML_INACTIVE |
+                  VIR_DOMAIN_XML_UPDATE_CPU, NULL);
+
     if (!(type = virDomainVirtTypeToString(def->virtType))) {
         virDomainReportError(VIR_ERR_INTERNAL_ERROR,
                          _("unexpected domain type %d"), def->virtType);
index f938e2454538b40370ed3e63f43447795ee2e620..cc37d05af8df3af9a8216a56b6802bad4c874cb6 100644 (file)
@@ -2494,6 +2494,8 @@ libxlDomainGetXMLDesc(virDomainPtr dom, unsigned int flags)
     virDomainObjPtr vm;
     char *ret = NULL;
 
+    /* Flags checked by virDomainDefFormat */
+
     libxlDriverLock(driver);
     vm = virDomainFindByUUID(&driver->domains, dom->uuid);
     libxlDriverUnlock(driver);
index b6da757b752d6997982a737f384bbb44fb0e5699..78f0f9dca1ab8f33047e142d2d4f13a53c14bc97 100644 (file)
@@ -967,6 +967,8 @@ static char *lxcDomainGetXMLDesc(virDomainPtr dom,
     virDomainObjPtr vm;
     char *ret = NULL;
 
+    /* Flags checked by virDomainDefFormat */
+
     lxcDriverLock(driver);
     vm = virDomainFindByUUID(&driver->domains, dom->uuid);
     lxcDriverUnlock(driver);
index d50ecf16ffb919ab358977671f5062991e9fcb79..cc0c590539d72e1d5203d8e819281dff196908e6 100644 (file)
@@ -461,6 +461,8 @@ static char *openvzDomainGetXMLDesc(virDomainPtr dom, unsigned int flags) {
     virDomainObjPtr vm;
     char *ret = NULL;
 
+    /* Flags checked by virDomainDefFormat */
+
     openvzDriverLock(driver);
     vm = virDomainFindByUUID(&driver->domains, dom->uuid);
     openvzDriverUnlock(driver);
index 62ba192e2fe21955edfc9faf68acdbe2069cb001..2489063a3c1a27480014b46af4bb8d8eac8f8781 100644 (file)
@@ -3317,6 +3317,8 @@ phypDomainGetXMLDesc(virDomainPtr dom, unsigned int flags)
     virDomainDef def;
     char *managed_system = phyp_driver->managed_system;
 
+    /* Flags checked by virDomainDefFormat */
+
     memset(&def, 0, sizeof(virDomainDef));
 
     def.virtType = VIR_DOMAIN_VIRT_PHYP;
index f3a495f36c6f69f9c15c900860f0957235db7ddb..0a73a59701b9602c8fbe9648a383234836773bf3 100644 (file)
@@ -3850,9 +3850,7 @@ static char *qemuDomainGetXMLDesc(virDomainPtr dom,
     unsigned long balloon;
     int err;
 
-    virCheckFlags(VIR_DOMAIN_XML_SECURE |
-                  VIR_DOMAIN_XML_INACTIVE |
-                  VIR_DOMAIN_XML_UPDATE_CPU, NULL);
+    /* Flags checked by virDomainDefFormat */
 
     qemuDriverLock(driver);
     vm = virDomainFindByUUID(&driver->domains, dom->uuid);
@@ -6283,6 +6281,8 @@ qemudDomainMemoryPeek (virDomainPtr dom,
     int fd = -1, ret = -1;
     qemuDomainObjPrivatePtr priv;
 
+    virCheckFlags(VIR_MEMORY_VIRTUAL | VIR_MEMORY_PHYSICAL, -1);
+
     qemuDriverLock(driver);
     vm = virDomainFindByUUID(&driver->domains, dom->uuid);
     qemuDriverUnlock(driver);
index f3fb320f266e40b6ba684c0e8e518965675ba50b..064a1cdee5a81b062d8c9b20f34b88e0550ce981 100644 (file)
@@ -2366,6 +2366,8 @@ static char *testDomainGetXMLDesc(virDomainPtr domain, unsigned int flags)
     virDomainObjPtr privdom;
     char *ret = NULL;
 
+    /* Flags checked by virDomainDefFormat */
+
     testDriverLock(privconn);
     privdom = virDomainFindByName(&privconn->domains,
                                   domain->name);
index d0374ea4acb61e42aa83b00d5d2007dc896dcb36..557c948db13d3df761e1345d5217cf3b60d63065 100644 (file)
@@ -1653,9 +1653,7 @@ static char *umlDomainGetXMLDesc(virDomainPtr dom,
     virDomainObjPtr vm;
     char *ret = NULL;
 
-    virCheckFlags(VIR_DOMAIN_XML_SECURE |
-                  VIR_DOMAIN_XML_INACTIVE |
-                  VIR_DOMAIN_XML_UPDATE_CPU, NULL);
+    /* Flags checked by virDomainDefFormat */
 
     umlDriverLock(driver);
     vm = virDomainFindByUUID(&driver->domains, dom->uuid);
@@ -1929,9 +1927,13 @@ cleanup:
 }
 
 
-static int umlDomainAttachDeviceFlags(virDomainPtr dom,
-                                      const char *xml,
-                                      unsigned int flags) {
+static int
+umlDomainAttachDeviceFlags(virDomainPtr dom,
+                           const char *xml,
+                           unsigned int flags)
+{
+    virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG, -1);
+
     if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
         umlReportError(VIR_ERR_OPERATION_INVALID,
                        "%s", _("cannot modify the persistent configuration of a domain"));
@@ -2037,9 +2039,13 @@ cleanup:
 }
 
 
-static int umlDomainDetachDeviceFlags(virDomainPtr dom,
-                                      const char *xml,
-                                      unsigned int flags) {
+static int
+umlDomainDetachDeviceFlags(virDomainPtr dom,
+                           const char *xml,
+                           unsigned int flags)
+{
+    virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG, -1);
+
     if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
         umlReportError(VIR_ERR_OPERATION_INVALID,
                        "%s", _("cannot modify the persistent configuration of a domain"));
index 6cb9bb4ce610bedab5e55b2736f29bbc3a846f50..53bac798b8318f0ffcd0c66c7d0df2e4647eb127 100644 (file)
@@ -2145,6 +2145,8 @@ static char *vboxDomainGetXMLDesc(virDomainPtr dom, unsigned int flags) {
     nsresult rc;
     char *tmp;
 
+    /* Flags checked by virDomainDefFormat */
+
     if (VIR_ALLOC(def) < 0) {
         virReportOOMError();
         goto cleanup;
@@ -5296,8 +5298,12 @@ static int vboxDomainAttachDevice(virDomainPtr dom, const char *xml) {
     return vboxDomainAttachDeviceImpl(dom, xml, 0);
 }
 
-static int vboxDomainAttachDeviceFlags(virDomainPtr dom, const char *xml,
-                                       unsigned int flags) {
+static int
+vboxDomainAttachDeviceFlags(virDomainPtr dom, const char *xml,
+                            unsigned int flags)
+{
+    virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG, -1);
+
     if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
         vboxError(VIR_ERR_OPERATION_INVALID, "%s",
                   _("cannot modify the persistent configuration of a domain"));
@@ -5446,8 +5452,12 @@ cleanup:
     return ret;
 }
 
-static int vboxDomainDetachDeviceFlags(virDomainPtr dom, const char *xml,
-                                       unsigned int flags) {
+static int
+vboxDomainDetachDeviceFlags(virDomainPtr dom, const char *xml,
+                            unsigned int flags)
+{
+    virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG, -1);
+
     if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
         vboxError(VIR_ERR_OPERATION_INVALID, "%s",
                   _("cannot modify the persistent configuration of a domain"));
index c0430fee4f61fe58058dda235a4c2afe7952fabe..36b48e0fb8f66eeb89271e296c8bdf85ac1664bc 100644 (file)
@@ -807,6 +807,8 @@ vmwareDomainGetXMLDesc(virDomainPtr dom, unsigned int flags)
     virDomainObjPtr vm;
     char *ret = NULL;
 
+    /* Flags checked by virDomainDefFormat */
+
     vmwareDriverLock(driver);
     vm = virDomainFindByUUID(&driver->domains, dom->uuid);
     vmwareDriverUnlock(driver);
index 98838e69ee28636b1cc368fdf31532b1cb8193d0..97da1d1e2f062cf50628e11d8905f633613b8c1b 100644 (file)
@@ -1318,9 +1318,7 @@ xenapiDomainGetXMLDesc(virDomainPtr dom, unsigned int flags)
     struct xen_vif_set *vif_set = NULL;
     char *xml;
 
-    virCheckFlags(VIR_DOMAIN_XML_SECURE |
-                  VIR_DOMAIN_XML_INACTIVE |
-                  VIR_DOMAIN_XML_UPDATE_CPU, NULL);
+    /* Flags checked by virDomainDefFormat */
 
     if (!xen_vm_get_by_name_label(session, &vms, dom->name)) return NULL;
     if (vms->size != 1) {