From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713652238297.18360336202386; Thu, 15 Feb 2018 08:54:12 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id C84968008D; Thu, 15 Feb 2018 16:54:10 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A53E161F2D; Thu, 15 Feb 2018 16:54:10 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 6D1DF181A8C7; Thu, 15 Feb 2018 16:54:10 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGhqn4025623 for ; Thu, 15 Feb 2018 11:43:52 -0500 Received: by smtp.corp.redhat.com (Postfix) id 5F8F72024CAA; Thu, 15 Feb 2018 16:43:52 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id 01B1D2024CA8; Thu, 15 Feb 2018 16:43:51 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:06 +0000 Message-Id: <20180215164347.11538-2-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 01/42] conf: add enum constants for default controller models X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Thu, 15 Feb 2018 16:54:11 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 The controller model is slightly unusual in that the default value is -1, not 0. As a result the default value is not covered by any of the existing enum cases. This in turn means that any switch() statements that think they have covered all cases, will in fact not match the default value at all. In the qemuDomainDeviceCalculatePCIConnectFlags() method this has caused a serious mistake where we fallthough from the SCSI controller case, to the VirtioSerial controller case, and from the USB controller case to the IDE controller case. By adding explicit enum constant starting at -1, we can ensure switches remember to handle the default case. Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: John Ferlan --- src/conf/domain_addr.c | 5 +++++ src/conf/domain_conf.c | 1 + src/conf/domain_conf.h | 4 ++++ src/qemu/qemu_command.c | 17 ++++++++++++++--- src/qemu/qemu_domain.c | 10 +++++++++- src/qemu/qemu_domain_address.c | 22 ++++++++++++++++++++++ src/vbox/vbox_common.c | 13 +++++++++---- 7 files changed, 64 insertions(+), 8 deletions(-) diff --git a/src/conf/domain_addr.c b/src/conf/domain_addr.c index 6422682391..df19c6be1a 100644 --- a/src/conf/domain_addr.c +++ b/src/conf/domain_addr.c @@ -39,6 +39,7 @@ virDomainPCIControllerModelToConnectType(virDomainControl= lerModelPCI model) * the equivalent VIR_PCI_CONNECT_TYPE_*. */ switch (model) { + case VIR_DOMAIN_CONTROLLER_MODEL_PCI_DEFAULT: case VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST: case VIR_DOMAIN_CONTROLLER_MODEL_PCI_ROOT: case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT: @@ -344,6 +345,9 @@ virDomainPCIAddressBusSetModel(virDomainPCIAddressBusPt= r bus, bus->maxSlot =3D VIR_PCI_ADDRESS_SLOT_LAST; break; =20 + case VIR_DOMAIN_CONTROLLER_MODEL_PCI_DEFAULT: + break; + case VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST: virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("PCI controller model was not set correctly= ")); @@ -1746,6 +1750,7 @@ virDomainUSBAddressControllerModelToPorts(virDomainCo= ntrollerDefPtr cont) return cont->opts.usbopts.ports; return 8; =20 + case VIR_DOMAIN_CONTROLLER_MODEL_USB_DEFAULT: case VIR_DOMAIN_CONTROLLER_MODEL_USB_NONE: case VIR_DOMAIN_CONTROLLER_MODEL_USB_LAST: break; diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index fb732a0c2a..abc3332377 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -10196,6 +10196,7 @@ virDomainControllerDefParseXML(virDomainXMLOptionPt= r xmlopt, case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_DOWNSTREAM_PORT: case VIR_DOMAIN_CONTROLLER_MODEL_PCI_EXPANDER_BUS: case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_EXPANDER_BUS: + case VIR_DOMAIN_CONTROLLER_MODEL_PCI_DEFAULT: case VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST: /* Other controller models don't require extra checks */ break; diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 6cd81ef2de..78b57aa6d4 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -685,6 +685,7 @@ typedef enum { =20 =20 typedef enum { + VIR_DOMAIN_CONTROLLER_MODEL_PCI_DEFAULT =3D -1, VIR_DOMAIN_CONTROLLER_MODEL_PCI_ROOT, VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT, VIR_DOMAIN_CONTROLLER_MODEL_PCI_BRIDGE, @@ -714,6 +715,7 @@ typedef enum { } virDomainControllerPCIModelName; =20 typedef enum { + VIR_DOMAIN_CONTROLLER_MODEL_SCSI_DEFAULT =3D -1, VIR_DOMAIN_CONTROLLER_MODEL_SCSI_AUTO, VIR_DOMAIN_CONTROLLER_MODEL_SCSI_BUSLOGIC, VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSILOGIC, @@ -727,6 +729,7 @@ typedef enum { } virDomainControllerModelSCSI; =20 typedef enum { + VIR_DOMAIN_CONTROLLER_MODEL_USB_DEFAULT =3D -1, VIR_DOMAIN_CONTROLLER_MODEL_USB_PIIX3_UHCI, VIR_DOMAIN_CONTROLLER_MODEL_USB_PIIX4_UHCI, VIR_DOMAIN_CONTROLLER_MODEL_USB_EHCI, @@ -746,6 +749,7 @@ typedef enum { } virDomainControllerModelUSB; =20 typedef enum { + VIR_DOMAIN_CONTROLLER_MODEL_IDE_DEFAULT =3D -1, VIR_DOMAIN_CONTROLLER_MODEL_IDE_PIIX3, VIR_DOMAIN_CONTROLLER_MODEL_IDE_PIIX4, VIR_DOMAIN_CONTROLLER_MODEL_IDE_ICH6, diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 6c73cd7bfe..2a75a169c2 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -2671,10 +2671,16 @@ qemuBuildControllerDevStr(const virDomainDef *domai= nDef, case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_AUTO: case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_BUSLOGIC: case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VMPVSCSI: - case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Unsupported controller model: %s"), virDomainControllerModelSCSITypeToString(def->m= odel)); + goto error; + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_DEFAULT: + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected SCSI controller model %d"), + def->model); + goto error; } virBufferAsprintf(&buf, ",id=3D%s", def->info.alias); break; @@ -2771,9 +2777,14 @@ qemuBuildControllerDevStr(const virDomainDef *domain= Def, virBufferAsprintf(&buf, ",numa_node=3D%d", pciopts->numaNo= de); break; case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("Unsupported PCI-E root controller")); + goto error; + case VIR_DOMAIN_CONTROLLER_MODEL_PCI_DEFAULT: case VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST: - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("wrong function called")); + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected PCI controller model %d"), + def->model); goto error; } break; diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 178ec24ae7..e114f5dfcf 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -4098,11 +4098,16 @@ qemuDomainCheckSCSIControllerModel(virQEMUCapsPtr q= emuCaps, case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_AUTO: case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_BUSLOGIC: case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VMPVSCSI: - case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Unsupported controller model: %s"), virDomainControllerModelSCSITypeToString(model)); return false; + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_DEFAULT: + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected SCSI controller model %d"), + model); + return false; } =20 return true; @@ -4189,6 +4194,7 @@ qemuDomainDeviceDefValidateControllerSCSI(const virDo= mainControllerDef *controll case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VMPVSCSI: case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_IBMVSCSI: case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1078: + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_DEFAULT: case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST: break; } @@ -4236,6 +4242,7 @@ qemuDomainDeviceDefValidateControllerPCI(const virDom= ainControllerDef *controlle =20 case VIR_DOMAIN_CONTROLLER_MODEL_PCI_ROOT: case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT: + case VIR_DOMAIN_CONTROLLER_MODEL_PCI_DEFAULT: case VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST: break; } @@ -4468,6 +4475,7 @@ qemuDomainDeviceDefValidateControllerPCI(const virDom= ainControllerDef *controlle =20 case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT: case VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST: + case VIR_DOMAIN_CONTROLLER_MODEL_PCI_DEFAULT: break; } =20 diff --git a/src/qemu/qemu_domain_address.c b/src/qemu/qemu_domain_address.c index e28119e4b1..de565dbf74 100644 --- a/src/qemu/qemu_domain_address.c +++ b/src/qemu/qemu_domain_address.c @@ -513,6 +513,16 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevi= ceDefPtr dev, =20 case VIR_DOMAIN_CONTROLLER_TYPE_USB: switch ((virDomainControllerModelUSB) cont->model) { + case VIR_DOMAIN_CONTROLLER_MODEL_USB_DEFAULT: + /* XXX it isn't clear that this is the right + * thing to do here. We probably ought to + * return 0, but that breaks test suite right + * now because we call this method before we + * have turned the _DEFAULT case into a + * specific choice + */ + return pciFlags; + case VIR_DOMAIN_CONTROLLER_MODEL_USB_NEC_XHCI: case VIR_DOMAIN_CONTROLLER_MODEL_USB_QEMU_XHCI: return pcieFlags; @@ -540,6 +550,16 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevi= ceDefPtr dev, =20 case VIR_DOMAIN_CONTROLLER_TYPE_SCSI: switch ((virDomainControllerModelSCSI) cont->model) { + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_DEFAULT: + /* XXX it isn't clear that this is the right + * thing to do here. We probably ought to + * return 0, but that breaks test suite right + * now because we call this method before we + * have turned the _DEFAULT case into a + * specific choice + */ + return pciFlags; + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_SCSI: return virtioFlags; =20 @@ -2165,6 +2185,7 @@ qemuDomainPCIControllerSetDefaultModelName(virDomainC= ontrollerDefPtr cont, *modelName =3D VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_SPAPR_PCI_= HOST_BRIDGE; break; case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT: + case VIR_DOMAIN_CONTROLLER_MODEL_PCI_DEFAULT: case VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST: break; } @@ -2552,6 +2573,7 @@ qemuDomainAssignPCIAddresses(virDomainDefPtr def, case VIR_DOMAIN_CONTROLLER_MODEL_DMI_TO_PCI_BRIDGE: case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_UPSTREAM_PORT: case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT: + case VIR_DOMAIN_CONTROLLER_MODEL_PCI_DEFAULT: case VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST: break; } diff --git a/src/vbox/vbox_common.c b/src/vbox/vbox_common.c index aed14f02d7..07f4308784 100644 --- a/src/vbox/vbox_common.c +++ b/src/vbox/vbox_common.c @@ -410,12 +410,17 @@ vboxSetStorageController(virDomainControllerDefPtr co= ntroller, case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_IBMVSCSI: case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_SCSI: case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1078: - case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("The vbox driver does not support %s SCSI " "controller model"), virDomainControllerModelSCSITypeToString(contro= ller->model)); goto cleanup; + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_DEFAULT: + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected SCSI controller model %d"), + controller->model); + goto cleanup; } /* libvirt ide model =3D> vbox ide model */ } else if (controller->type =3D=3D VIR_DOMAIN_CONTROLLER_TYPE_IDE) { @@ -433,10 +438,10 @@ vboxSetStorageController(virDomainControllerDefPtr co= ntroller, =20 break; case VIR_DOMAIN_CONTROLLER_MODEL_IDE_LAST: + case VIR_DOMAIN_CONTROLLER_MODEL_IDE_DEFAULT: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("The vbox driver does not support %s IDE " - "controller model"), - virDomainControllerModelIDETypeToString(contr= oller->model)); + _("Unexpected IDE controller model %d"), + controller->model); goto cleanup; } } --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713666168748.0538828637401; Thu, 15 Feb 2018 08:54:26 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E6A053AD89; Thu, 15 Feb 2018 16:54:24 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id BA3C35D965; Thu, 15 Feb 2018 16:54:24 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 82B2B4A48B; Thu, 15 Feb 2018 16:54:24 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGhrbv025628 for ; Thu, 15 Feb 2018 11:43:53 -0500 Received: by smtp.corp.redhat.com (Postfix) id EC5C62024CAA; Thu, 15 Feb 2018 16:43:52 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id 8ED882024CA8; Thu, 15 Feb 2018 16:43:52 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:07 +0000 Message-Id: <20180215164347.11538-3-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 02/42] util: handle missing switch enum cases X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Thu, 15 Feb 2018 16:54:25 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Ensure all enum cases are listed in switch statements. Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: John Ferlan --- src/util/virconf.c | 13 ++++++++++++- src/util/virfirewall.c | 7 +++++-- src/util/virlog.c | 10 +++++++++- src/util/virnetdevvportprofile.c | 11 ++++++++++- 4 files changed, 36 insertions(+), 5 deletions(-) diff --git a/src/util/virconf.c b/src/util/virconf.c index a82a509ca3..af806dd735 100644 --- a/src/util/virconf.c +++ b/src/util/virconf.c @@ -296,7 +296,10 @@ virConfSaveValue(virBufferPtr buf, virConfValuePtr val) virBufferAddLit(buf, " ]"); break; } + case VIR_CONF_LAST: default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected conf value type %d"), val->type); return -1; } return 0; @@ -986,13 +989,21 @@ int virConfGetValueStringList(virConfPtr conf, } ATTRIBUTE_FALLTHROUGH; =20 - default: + case VIR_CONF_LLONG: + case VIR_CONF_ULLONG: + case VIR_CONF_NONE: virReportError(VIR_ERR_INTERNAL_ERROR, compatString ? _("%s: expected a string or string list for '%s' pa= rameter") : _("%s: expected a string list for '%s' parameter"), conf->filename, setting); return -1; + + case VIR_CONF_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected value type %d"), cval->type); + return -1; } =20 return 1; diff --git a/src/util/virfirewall.c b/src/util/virfirewall.c index ff1bb83073..e7da482640 100644 --- a/src/util/virfirewall.c +++ b/src/util/virfirewall.c @@ -827,9 +827,12 @@ virFirewallApplyRule(virFirewallPtr firewall, if (virFirewallApplyRuleFirewallD(rule, ignoreErrors, &output) < 0) return -1; break; + + case VIR_FIREWALL_BACKEND_AUTOMATIC: + case VIR_FIREWALL_BACKEND_LAST: default: - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("Unexpected firewall engine backend")); + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected firewall engine backend %d"), current= Backend); return -1; } =20 diff --git a/src/util/virlog.c b/src/util/virlog.c index 4f66cc5e5c..ecbee71cfb 100644 --- a/src/util/virlog.c +++ b/src/util/virlog.c @@ -1206,10 +1206,18 @@ virLogGetOutputs(void) virLogDestinationTypeToString(dest), virLogOutputs[i]->name); break; - default: + case VIR_LOG_TO_STDERR: + case VIR_LOG_TO_JOURNALD: virBufferAsprintf(&outputbuf, "%d:%s", virLogOutputs[i]->priority, virLogDestinationTypeToString(dest)); + break; + case VIR_LOG_TO_OUTPUT_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected log output type %d"), dest); + virLogUnlock(); + return NULL; } } virLogUnlock(); diff --git a/src/util/virnetdevvportprofile.c b/src/util/virnetdevvportprof= ile.c index db495a7549..4c0a64e439 100644 --- a/src/util/virnetdevvportprofile.c +++ b/src/util/virnetdevvportprofile.c @@ -1071,6 +1071,9 @@ virNetDevVPortProfileOp8021Qbg(const char *ifname, case VIR_NETDEV_VPORT_PROFILE_LINK_OP_PREASSOCIATE: op =3D PORT_REQUEST_PREASSOCIATE; break; + case VIR_NETDEV_VPORT_PROFILE_LINK_OP_PREASSOCIATE_RR: + op =3D PORT_REQUEST_PREASSOCIATE_RR; + break; case VIR_NETDEV_VPORT_PROFILE_LINK_OP_ASSOCIATE: op =3D PORT_REQUEST_ASSOCIATE; break; @@ -1191,10 +1194,16 @@ virNetDevVPortProfileOp8021Qbh(const char *ifname, false); break; =20 - default: + case VIR_NETDEV_VPORT_PROFILE_LINK_OP_PREASSOCIATE: virReportError(VIR_ERR_INTERNAL_ERROR, _("operation type %d not supported"), virtPortOp); rc =3D -1; + break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected operation type %d"), virtPortOp); + rc =3D -1; + break; } =20 cleanup: --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713674174183.64146699634387; Thu, 15 Feb 2018 08:54:34 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 0974768E2D; Thu, 15 Feb 2018 16:54:33 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id DBCC560172; Thu, 15 Feb 2018 16:54:32 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id A95B04ED20; Thu, 15 Feb 2018 16:54:32 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGhrY0025633 for ; Thu, 15 Feb 2018 11:43:53 -0500 Received: by smtp.corp.redhat.com (Postfix) id 83CCD2024CAB; Thu, 15 Feb 2018 16:43:53 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id 265CA2024CA8; Thu, 15 Feb 2018 16:43:53 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:08 +0000 Message-Id: <20180215164347.11538-4-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 03/42] conf: handle missing switch enum cases X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Thu, 15 Feb 2018 16:54:33 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Ensure all enum cases are listed in switch statements. Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: John Ferlan --- src/conf/domain_audit.c | 1 + src/conf/domain_conf.c | 47 +++++++++++++++++++++++++++++++++++++++++---= --- src/conf/nwfilter_conf.c | 32 +++++++++++++++++++++++++++++++- 3 files changed, 73 insertions(+), 7 deletions(-) diff --git a/src/conf/domain_audit.c b/src/conf/domain_audit.c index 723c737363..82868bca76 100644 --- a/src/conf/domain_audit.c +++ b/src/conf/domain_audit.c @@ -586,6 +586,7 @@ virDomainAuditTPM(virDomainObjPtr vm, virDomainTPMDefPt= r tpm, "virt=3D%s resrc=3Ddev reason=3D%s %s uuid=3D%s %s", virt, reason, vmname, uuidstr, device); break; + case VIR_DOMAIN_TPM_TYPE_LAST: default: break; } diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index abc3332377..538dfc84bd 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -11565,8 +11565,21 @@ virDomainNetDefParseXML(virDomainXMLOptionPtr xmlo= pt, def->filterparams =3D filterparams; filterparams =3D NULL; break; - default: + case VIR_DOMAIN_NET_TYPE_USER: + case VIR_DOMAIN_NET_TYPE_VHOSTUSER: + case VIR_DOMAIN_NET_TYPE_SERVER: + case VIR_DOMAIN_NET_TYPE_CLIENT: + case VIR_DOMAIN_NET_TYPE_MCAST: + case VIR_DOMAIN_NET_TYPE_INTERNAL: + case VIR_DOMAIN_NET_TYPE_DIRECT: + case VIR_DOMAIN_NET_TYPE_HOSTDEV: + case VIR_DOMAIN_NET_TYPE_UDP: break; + case VIR_DOMAIN_NET_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected network type %d"), def->type); + goto error; } } =20 @@ -14646,6 +14659,12 @@ virDomainVideoDefaultRAM(const virDomainDef *def, /* QEMU use 64M as the minimal video memory for qxl device */ return 64 * 1024; =20 + case VIR_DOMAIN_VIDEO_TYPE_DEFAULT: + case VIR_DOMAIN_VIDEO_TYPE_VBOX: + case VIR_DOMAIN_VIDEO_TYPE_PARALLELS: + case VIR_DOMAIN_VIDEO_TYPE_VIRTIO: + case VIR_DOMAIN_VIDEO_TYPE_GOP: + case VIR_DOMAIN_VIDEO_TYPE_LAST: default: return 0; } @@ -14680,6 +14699,16 @@ virDomainVideoDefaultType(const virDomainDef *def) return VIR_DOMAIN_VIDEO_TYPE_PARALLELS; case VIR_DOMAIN_VIRT_BHYVE: return VIR_DOMAIN_VIDEO_TYPE_GOP; + case VIR_DOMAIN_VIRT_QEMU: + case VIR_DOMAIN_VIRT_KQEMU: + case VIR_DOMAIN_VIRT_KVM: + case VIR_DOMAIN_VIRT_LXC: + case VIR_DOMAIN_VIRT_UML: + case VIR_DOMAIN_VIRT_OPENVZ: + case VIR_DOMAIN_VIRT_HYPERV: + case VIR_DOMAIN_VIRT_PHYP: + case VIR_DOMAIN_VIRT_NONE: + case VIR_DOMAIN_VIRT_LAST: default: return VIR_DOMAIN_VIDEO_TYPE_DEFAULT; } @@ -27780,7 +27809,7 @@ virDomainObjGetState(virDomainObjPtr dom, int *reas= on) void virDomainObjSetState(virDomainObjPtr dom, virDomainState state, int reason) { - int last =3D -1; + int last; =20 switch (state) { case VIR_DOMAIN_NOSTATE: @@ -27807,11 +27836,8 @@ virDomainObjSetState(virDomainObjPtr dom, virDomai= nState state, int reason) case VIR_DOMAIN_PMSUSPENDED: last =3D VIR_DOMAIN_PMSUSPENDED_LAST; break; + case VIR_DOMAIN_LAST: default: - last =3D -1; - } - - if (last < 0) { VIR_ERROR(_("invalid domain state: %d"), state); return; } @@ -27975,6 +28001,15 @@ virDomainNetGetActualVirtPortProfile(virDomainNetD= efPtr iface) default: return NULL; } + case VIR_DOMAIN_NET_TYPE_USER: + case VIR_DOMAIN_NET_TYPE_ETHERNET: + case VIR_DOMAIN_NET_TYPE_VHOSTUSER: + case VIR_DOMAIN_NET_TYPE_SERVER: + case VIR_DOMAIN_NET_TYPE_CLIENT: + case VIR_DOMAIN_NET_TYPE_MCAST: + case VIR_DOMAIN_NET_TYPE_INTERNAL: + case VIR_DOMAIN_NET_TYPE_UDP: + case VIR_DOMAIN_NET_TYPE_LAST: default: return NULL; } diff --git a/src/conf/nwfilter_conf.c b/src/conf/nwfilter_conf.c index 5d6423e060..9e8c725f9f 100644 --- a/src/conf/nwfilter_conf.c +++ b/src/conf/nwfilter_conf.c @@ -2153,8 +2153,35 @@ virNWFilterRuleValidate(virNWFilterRuleDefPtr rule) } } break; - default: + case VIR_NWFILTER_RULE_PROTOCOL_NONE: + case VIR_NWFILTER_RULE_PROTOCOL_MAC: + case VIR_NWFILTER_RULE_PROTOCOL_VLAN: + case VIR_NWFILTER_RULE_PROTOCOL_STP: + case VIR_NWFILTER_RULE_PROTOCOL_ARP: + case VIR_NWFILTER_RULE_PROTOCOL_RARP: + case VIR_NWFILTER_RULE_PROTOCOL_TCP: + case VIR_NWFILTER_RULE_PROTOCOL_ICMP: + case VIR_NWFILTER_RULE_PROTOCOL_IGMP: + case VIR_NWFILTER_RULE_PROTOCOL_UDP: + case VIR_NWFILTER_RULE_PROTOCOL_UDPLITE: + case VIR_NWFILTER_RULE_PROTOCOL_ESP: + case VIR_NWFILTER_RULE_PROTOCOL_AH: + case VIR_NWFILTER_RULE_PROTOCOL_SCTP: + case VIR_NWFILTER_RULE_PROTOCOL_ALL: + case VIR_NWFILTER_RULE_PROTOCOL_TCPoIPV6: + case VIR_NWFILTER_RULE_PROTOCOL_ICMPV6: + case VIR_NWFILTER_RULE_PROTOCOL_UDPoIPV6: + case VIR_NWFILTER_RULE_PROTOCOL_UDPLITEoIPV6: + case VIR_NWFILTER_RULE_PROTOCOL_ESPoIPV6: + case VIR_NWFILTER_RULE_PROTOCOL_AHoIPV6: + case VIR_NWFILTER_RULE_PROTOCOL_SCTPoIPV6: + case VIR_NWFILTER_RULE_PROTOCOL_ALLoIPV6: break; + case VIR_NWFILTER_RULE_PROTOCOL_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected nwfilter protocol %d"), rule->prtclTy= pe); + return -1; } =20 return ret; @@ -3064,7 +3091,10 @@ virNWFilterRuleDefDetailsFormat(virBufferPtr buf, virBufferAddLit(buf, "false"); break; =20 + case DATATYPE_IPSETNAME: + case DATATYPE_IPSETFLAGS: case DATATYPE_STRING: + case DATATYPE_LAST: default: virBufferAsprintf(buf, "UNSUPPORTED DATATYPE 0x%02x\n", --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 15187134051441006.8609904820441; Thu, 15 Feb 2018 08:50:05 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 96DD281DF4; Thu, 15 Feb 2018 16:50:02 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E9FE66313F; Thu, 15 Feb 2018 16:50:00 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 1EF7118033EB; Thu, 15 Feb 2018 16:49:56 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGhss1025640 for ; Thu, 15 Feb 2018 11:43:54 -0500 Received: by smtp.corp.redhat.com (Postfix) id 1C3342026609; Thu, 15 Feb 2018 16:43:54 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id B26AF2024CA8; Thu, 15 Feb 2018 16:43:53 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:09 +0000 Message-Id: <20180215164347.11538-5-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 04/42] esx: handle missing switch enum cases X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Thu, 15 Feb 2018 16:50:03 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Ensure all enum cases are listed in switch statements, or explicitly cast away enum type where we don't want to list all cases. Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: John Ferlan --- src/esx/esx_driver.c | 1 + src/esx/esx_vi.c | 11 +++++++---- src/esx/esx_vi_types.c | 9 +++++---- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/esx/esx_driver.c b/src/esx/esx_driver.c index f575362059..c5f04efa81 100644 --- a/src/esx/esx_driver.c +++ b/src/esx/esx_driver.c @@ -3603,6 +3603,7 @@ esxDomainGetSchedulerParametersFlags(virDomainPtr dom= ain, params[i].value.i =3D -3; break; =20 + case esxVI_SharesLevel_Undefined: default: virReportError(VIR_ERR_INTERNAL_ERROR, _("Shares level has unknown value %d"), diff --git a/src/esx/esx_vi.c b/src/esx/esx_vi.c index edf52ff828..103f726069 100644 --- a/src/esx/esx_vi.c +++ b/src/esx/esx_vi.c @@ -483,7 +483,7 @@ esxVI_SharedCURL_Lock(CURL *handle ATTRIBUTE_UNUSED, cu= rl_lock_data data, size_t i; esxVI_SharedCURL *shared =3D userptr; =20 - switch (data) { + switch ((int)data) { case CURL_LOCK_DATA_SHARE: i =3D 0; break; @@ -511,7 +511,7 @@ esxVI_SharedCURL_Unlock(CURL *handle ATTRIBUTE_UNUSED, = curl_lock_data data, size_t i; esxVI_SharedCURL *shared =3D userptr; =20 - switch (data) { + switch ((int)data) { case CURL_LOCK_DATA_SHARE: i =3D 0; break; @@ -1563,6 +1563,7 @@ esxVI_Context_Execute(esxVI_Context *ctx, const char = *methodName, =20 break; =20 + case esxVI_Occurrence_Undefined: default: virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Invalid argument (occurrence)")); @@ -2280,9 +2281,11 @@ esxVI_LookupObjectContentByType(esxVI_Context *ctx, type, root->type); break; =20 + case esxVI_Occurrence_None: + case esxVI_Occurrence_Undefined: default: - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("Invalid occurrence value")); + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Invalid occurrence value %d"), occurrence); break; } =20 diff --git a/src/esx/esx_vi_types.c b/src/esx/esx_vi_types.c index be35af861c..74183f8307 100644 --- a/src/esx/esx_vi_types.c +++ b/src/esx/esx_vi_types.c @@ -544,7 +544,7 @@ VIR_LOG_INIT("esx.esx_vi_types"); =20 #define ESX_VI__TEMPLATE__DISPATCH(_actual_type, _actual_type_name, __type= , \ _dispatch, _error_return) \ - switch (_actual_type) { \ + switch ((int)_actual_type) { \ _dispatch \ \ case esxVI_Type_##__type: \ @@ -690,7 +690,7 @@ VIR_LOG_INIT("esx.esx_vi_types"); return -1; \ } \ \ - switch (type) { \ + switch ((int)type) { \ _dispatch \ \ case esxVI_Type_##__type: \ @@ -967,7 +967,7 @@ esxVI_AnyType_DeepCopy(esxVI_AnyType **dest, esxVI_AnyT= ype *src) goto failure; } =20 - switch (src->type) { + switch ((int)src->type) { case esxVI_Type_Boolean: (*dest)->boolean =3D src->boolean; break; @@ -1071,7 +1071,7 @@ esxVI_AnyType_Deserialize(xmlNodePtr node, esxVI_AnyT= ype **anyType) (*anyType)->_name =3D number; \ } while (0) =20 - switch ((*anyType)->type) { + switch ((int)(*anyType)->type) { case esxVI_Type_Boolean: if (STREQ((*anyType)->value, "true")) { (*anyType)->boolean =3D esxVI_Boolean_True; @@ -1876,6 +1876,7 @@ esxVI_VirtualMachinePowerState_ConvertToLibvirt case esxVI_VirtualMachinePowerState_Suspended: return VIR_DOMAIN_PAUSED; =20 + case esxVI_VirtualMachinePowerState_Undefined: default: return VIR_DOMAIN_NOSTATE; } --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713435085197.5780554142641; Thu, 15 Feb 2018 08:50:35 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 38BAD7D0E4; Thu, 15 Feb 2018 16:50:33 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E5B351834C; Thu, 15 Feb 2018 16:50:32 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id DDED44A46C; Thu, 15 Feb 2018 16:50:31 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGhsRk025653 for ; Thu, 15 Feb 2018 11:43:54 -0500 Received: by smtp.corp.redhat.com (Postfix) id A89C42024CAB; Thu, 15 Feb 2018 16:43:54 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4B4FF2024CA8; Thu, 15 Feb 2018 16:43:54 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:10 +0000 Message-Id: <20180215164347.11538-6-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 05/42] hyperv: handle missing switch enum cases X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Thu, 15 Feb 2018 16:50:33 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Ensure all enum cases are listed in switch statements. This improves debug logging integration with openwsman. Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: John Ferlan --- src/hyperv/hyperv_driver.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/hyperv/hyperv_driver.c b/src/hyperv/hyperv_driver.c index ee94fd3511..e512b626ea 100644 --- a/src/hyperv/hyperv_driver.c +++ b/src/hyperv/hyperv_driver.c @@ -1656,13 +1656,27 @@ hypervDebugHandler(const char *message, debug_level= _e level, switch (level) { case DEBUG_LEVEL_ERROR: case DEBUG_LEVEL_CRITICAL: - VIR_ERROR(_("openwsman error: %s"), message); + case DEBUG_LEVEL_ALWAYS: + VIR_ERROR(_("openwsman: %s"), message); break; =20 case DEBUG_LEVEL_WARNING: - VIR_WARN("openwsman warning: %s", message); + VIR_WARN("openwsman: %s", message); break; =20 + case DEBUG_LEVEL_MESSAGE: + VIR_INFO("openwsman: %s", message); + break; + + case DEBUG_LEVEL_INFO: + VIR_INFO("openwsman: %s", message); + break; + + case DEBUG_LEVEL_DEBUG: + VIR_DEBUG("openwsman: %s", message); + break; + + case DEBUG_LEVEL_NONE: default: /* Ignore the rest */ break; --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713451558987.8284441760283; Thu, 15 Feb 2018 08:50:51 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 3330E62EB4; Thu, 15 Feb 2018 16:50:50 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 070B7609C2; Thu, 15 Feb 2018 16:50:46 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id A2EFD4A470; Thu, 15 Feb 2018 16:50:46 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGhttc025661 for ; Thu, 15 Feb 2018 11:43:55 -0500 Received: by smtp.corp.redhat.com (Postfix) id 3FC322024CAB; Thu, 15 Feb 2018 16:43:55 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id D65DB2024CA8; Thu, 15 Feb 2018 16:43:54 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:11 +0000 Message-Id: <20180215164347.11538-7-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 06/42] libxl: handle missing switch enum cases X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Thu, 15 Feb 2018 16:50:50 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Cast away enum type for libxl schedular constants since we don't want to cover all of them and don't want build to break when new ones are added. Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: John Ferlan --- src/libxl/libxl_driver.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c index be11134fb2..4b52de36f5 100644 --- a/src/libxl/libxl_driver.c +++ b/src/libxl/libxl_driver.c @@ -4497,7 +4497,7 @@ libxlDomainGetSchedulerType(virDomainPtr dom, int *np= arams) =20 if (nparams) *nparams =3D 0; - switch (sched_id) { + switch ((int)sched_id) { case LIBXL_SCHEDULER_SEDF: name =3D "sedf"; break; --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713461349882.920828680883; Thu, 15 Feb 2018 08:51:01 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id B3D316515B; Thu, 15 Feb 2018 16:50:59 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 86E4660C90; Thu, 15 Feb 2018 16:50:59 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 44B2818033E9; Thu, 15 Feb 2018 16:50:59 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGht6q025667 for ; Thu, 15 Feb 2018 11:43:56 -0500 Received: by smtp.corp.redhat.com (Postfix) id D28492024CAA; Thu, 15 Feb 2018 16:43:55 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id 6D5802024CA8; Thu, 15 Feb 2018 16:43:55 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:12 +0000 Message-Id: <20180215164347.11538-8-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 07/42] lxc: handle missing switch enum cases X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Thu, 15 Feb 2018 16:51:00 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Ensure all enum cases are listed in switch statements, or cast away enum type in places where we don't wish to cover all cases. Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: John Ferlan --- src/lxc/lxc_container.c | 7 ++++--- src/lxc/lxc_controller.c | 10 +++++++++- src/lxc/lxc_driver.c | 40 ++++++++++++++++++++++++++++++++++++---- 3 files changed, 49 insertions(+), 8 deletions(-) diff --git a/src/lxc/lxc_container.c b/src/lxc/lxc_container.c index 96fceaf1b8..ec641c3cab 100644 --- a/src/lxc/lxc_container.c +++ b/src/lxc/lxc_container.c @@ -2035,7 +2035,7 @@ static int lxcContainerDropCapabilities(virDomainDefP= tr def, break; =20 case VIR_DOMAIN_CAPABILITIES_POLICY_DEFAULT: - switch ((virDomainCapsFeature) i) { + switch (i) { case VIR_DOMAIN_CAPS_FEATURE_SYS_BOOT: /* No use of reboot */ toDrop =3D !keepReboot && (state !=3D VIR_TRISTATE_SWITCH_= ON); break; @@ -2066,10 +2066,11 @@ static int lxcContainerDropCapabilities(virDomainDe= fPtr def, } break; =20 + case VIR_DOMAIN_CAPABILITIES_POLICY_LAST: default: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("Unsupported capabilities policy: %s"), - virDomainCapabilitiesPolicyTypeToString(policy)= ); + _("Unsupported capabilities policy: %d"), + policy); } } =20 diff --git a/src/lxc/lxc_controller.c b/src/lxc/lxc_controller.c index c5e67df938..f9f26570cd 100644 --- a/src/lxc/lxc_controller.c +++ b/src/lxc/lxc_controller.c @@ -395,8 +395,16 @@ static int virLXCControllerGetNICIndexes(virLXCControl= lerPtr ctrl) case VIR_DOMAIN_NET_TYPE_INTERNAL: case VIR_DOMAIN_NET_TYPE_DIRECT: case VIR_DOMAIN_NET_TYPE_HOSTDEV: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Unsupported net type %s"), + virDomainNetTypeToString(ctrl->def->nets[i]->ty= pe)); + goto cleanup; + case VIR_DOMAIN_NET_TYPE_LAST: default: - break; + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Unexpected net type %d"), + ctrl->def->nets[i]->type); + goto cleanup; } } =20 diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c index 961baa344c..7d6568cdf8 100644 --- a/src/lxc/lxc_driver.c +++ b/src/lxc/lxc_driver.c @@ -3968,10 +3968,22 @@ lxcDomainAttachDeviceNetLive(virConnectPtr conn, if (!(veth =3D virLXCProcessSetupInterfaceDirect(conn, vm->def, ne= t))) goto cleanup; } break; - default: + case VIR_DOMAIN_NET_TYPE_USER: + case VIR_DOMAIN_NET_TYPE_VHOSTUSER: + case VIR_DOMAIN_NET_TYPE_SERVER: + case VIR_DOMAIN_NET_TYPE_CLIENT: + case VIR_DOMAIN_NET_TYPE_MCAST: + case VIR_DOMAIN_NET_TYPE_INTERNAL: + case VIR_DOMAIN_NET_TYPE_HOSTDEV: + case VIR_DOMAIN_NET_TYPE_UDP: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("Network device type is not supported")); goto cleanup; + case VIR_DOMAIN_NET_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected net type %d"), actualType); + goto cleanup; } /* Set bandwidth or warn if requested and not supported. */ actualBandwidth =3D virDomainNetGetActualBandwidth(net); @@ -4011,6 +4023,15 @@ lxcDomainAttachDeviceNetLive(virConnectPtr conn, ignore_value(virNetDevMacVLanDelete(veth)); break; =20 + case VIR_DOMAIN_NET_TYPE_USER: + case VIR_DOMAIN_NET_TYPE_VHOSTUSER: + case VIR_DOMAIN_NET_TYPE_SERVER: + case VIR_DOMAIN_NET_TYPE_CLIENT: + case VIR_DOMAIN_NET_TYPE_MCAST: + case VIR_DOMAIN_NET_TYPE_INTERNAL: + case VIR_DOMAIN_NET_TYPE_HOSTDEV: + case VIR_DOMAIN_NET_TYPE_UDP: + case VIR_DOMAIN_NET_TYPE_LAST: default: /* no-op */ break; @@ -4446,13 +4467,24 @@ lxcDomainDetachDeviceNetLive(virDomainObjPtr vm, * the host side. Further the container can change * the mac address of NIC name, so we can't easily * find out which guest NIC it maps to + */ case VIR_DOMAIN_NET_TYPE_DIRECT: - */ - - default: + case VIR_DOMAIN_NET_TYPE_USER: + case VIR_DOMAIN_NET_TYPE_VHOSTUSER: + case VIR_DOMAIN_NET_TYPE_SERVER: + case VIR_DOMAIN_NET_TYPE_CLIENT: + case VIR_DOMAIN_NET_TYPE_MCAST: + case VIR_DOMAIN_NET_TYPE_INTERNAL: + case VIR_DOMAIN_NET_TYPE_HOSTDEV: + case VIR_DOMAIN_NET_TYPE_UDP: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("Only bridged veth devices can be detached")); goto cleanup; + case VIR_DOMAIN_NET_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected net type %d"), actualType); + goto cleanup; } =20 virDomainAuditNet(vm, detach, NULL, "detach", true); --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713476110432.6801644751597; Thu, 15 Feb 2018 08:51:16 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id DDC211752C8; Thu, 15 Feb 2018 16:51:14 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 8C3164FA44; Thu, 15 Feb 2018 16:51:14 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 4A8AD4A470; Thu, 15 Feb 2018 16:51:14 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGhuL2025675 for ; Thu, 15 Feb 2018 11:43:56 -0500 Received: by smtp.corp.redhat.com (Postfix) id 6AE082026609; Thu, 15 Feb 2018 16:43:56 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0CB262024CA8; Thu, 15 Feb 2018 16:43:55 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:13 +0000 Message-Id: <20180215164347.11538-9-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 08/42] nwfilter: handle missing switch enum cases X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Thu, 15 Feb 2018 16:51:15 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Ensure all enum cases are listed in switch statements, or cast away enum type in places where we don't wish to cover all cases. Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: John Ferlan --- src/nwfilter/nwfilter_ebiptables_driver.c | 16 +++++++++++----- src/nwfilter/nwfilter_learnipaddr.c | 6 +++++- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/nwfilter/nwfilter_ebiptables_driver.c b/src/nwfilter/nwfil= ter_ebiptables_driver.c index b8682a1130..c624337f4d 100644 --- a/src/nwfilter/nwfilter_ebiptables_driver.c +++ b/src/nwfilter/nwfilter_ebiptables_driver.c @@ -320,11 +320,17 @@ _printDataType(virNWFilterVarCombIterPtr vars, VIR_FREE(flags); break; =20 + case DATATYPE_STRING: + case DATATYPE_STRINGCOPY: + case DATATYPE_BOOLEAN: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Cannot print data type %x"), item->datatype); + return -1; + case DATATYPE_LAST: default: virReportError(VIR_ERR_INTERNAL_ERROR, - _("Unhandled datatype %x"), item->datatype); + _("Unexpected datatype %x"), item->datatype); return -1; - break; } =20 return 0; @@ -1183,7 +1189,7 @@ _iptablesCreateRuleInstance(virFirewallPtr fw, =20 PRINT_IPT_ROOT_CHAIN(chain, chainPrefix, ifname); =20 - switch (rule->prtclType) { + switch ((int)rule->prtclType) { case VIR_NWFILTER_RULE_PROTOCOL_TCP: case VIR_NWFILTER_RULE_PROTOCOL_TCPoIPV6: fwrule =3D virFirewallAddRule(fw, layer, @@ -1873,7 +1879,7 @@ ebtablesCreateRuleInstance(virFirewallPtr fw, #define INST_ITEM_MASK(S, I, MASK, C) \ INST_ITEM_2PARMS(S, I, MASK, C, "/") =20 - switch (rule->prtclType) { + switch ((int)rule->prtclType) { case VIR_NWFILTER_RULE_PROTOCOL_MAC: fwrule =3D virFirewallAddRule(fw, VIR_FIREWALL_LAYER_ETHERNET, "-t", "nat", @@ -2677,7 +2683,7 @@ ebtablesCreateTmpSubChainFW(virFirewallPtr fw, fwrule =3D virFirewallAddRule(fw, VIR_FIREWALL_LAYER_ETHERNET, "-t", "nat", "-A", rootchain, NULL); =20 - switch (protoidx) { + switch ((int)protoidx) { case L2_PROTO_MAC_IDX: break; case L2_PROTO_STP_IDX: diff --git a/src/nwfilter/nwfilter_learnipaddr.c b/src/nwfilter/nwfilter_le= arnipaddr.c index 5b95f0e613..9ca0639576 100644 --- a/src/nwfilter/nwfilter_learnipaddr.c +++ b/src/nwfilter/nwfilter_learnipaddr.c @@ -430,7 +430,7 @@ learnIPAddressThread(void *arg) } virBufferAddLit(&buf, "src port 67 and dst port 68"); break; - default: + case DETECT_STATIC: if (techdriver->applyBasicRules(req->ifname, &req->macaddr) < 0) { req->status =3D EINVAL; @@ -438,6 +438,10 @@ learnIPAddressThread(void *arg) } virBufferAsprintf(&buf, "ether host %s or ether dst ff:ff:ff:ff:ff= :ff", macaddr); + break; + default: + req->status =3D EINVAL; + goto done; } =20 if (virBufferError(&buf)) { --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713486737101.37528624128026; Thu, 15 Feb 2018 08:51:26 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 7873C2D1D2; Thu, 15 Feb 2018 16:51:25 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 0BA5119CA9; Thu, 15 Feb 2018 16:51:25 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id C7BA018033EA; Thu, 15 Feb 2018 16:51:24 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGhvAL025686 for ; Thu, 15 Feb 2018 11:43:57 -0500 Received: by smtp.corp.redhat.com (Postfix) id 01D402024CAA; Thu, 15 Feb 2018 16:43:57 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id 98C4B2024CA8; Thu, 15 Feb 2018 16:43:56 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:14 +0000 Message-Id: <20180215164347.11538-10-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 09/42] qemu: handle missing switch enum cases X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Thu, 15 Feb 2018 16:51:25 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Ensure all enum cases are listed in switch statements, or cast away enum type in places where we don't wish to cover all cases. Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: John Ferlan --- src/qemu/qemu_command.c | 28 ++++++++++++++++++++-------- src/qemu/qemu_domain.c | 21 +++++++++++++++++++++ src/qemu/qemu_driver.c | 27 +++++++++++++++++++-------- src/qemu/qemu_hotplug.c | 36 +++++++++++++++++++++++++++++++----- src/qemu/qemu_migration.c | 11 ++++++++++- src/qemu/qemu_process.c | 2 ++ 6 files changed, 103 insertions(+), 22 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 2a75a169c2..33ca1e0960 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -2634,7 +2634,7 @@ qemuBuildControllerDevStr(const virDomainDef *domainD= ef, case VIR_DOMAIN_CONTROLLER_TYPE_SCSI: switch ((virDomainControllerModelSCSI) def->model) { case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_SCSI: - switch ((virDomainDeviceAddressType) address_type) { + switch (address_type) { case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW: virBufferAddLit(&buf, "virtio-scsi-ccw"); break; @@ -2686,7 +2686,7 @@ qemuBuildControllerDevStr(const virDomainDef *domainD= ef, break; =20 case VIR_DOMAIN_CONTROLLER_TYPE_VIRTIO_SERIAL: - switch ((virDomainDeviceAddressType) address_type) { + switch (address_type) { case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI: virBufferAddLit(&buf, "virtio-serial-pci"); break; @@ -3400,12 +3400,18 @@ qemuBuildNicDevStr(virDomainDefPtr def, case VIR_DOMAIN_NET_VIRTIO_TX_MODE_TIMER: virBufferAddLit(&buf, "timer"); break; + + case VIR_DOMAIN_NET_VIRTIO_TX_MODE_DEFAULT: + break; + + case VIR_DOMAIN_NET_VIRTIO_TX_MODE_LAST: default: /* this should never happen, if it does, we need * to add another case to this switch. */ - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("unrecognized virtio-net-pci 'tx' opt= ion")); + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected NIC tx mode %d"), + net->driver.virtio.txmode); goto error; } } else { @@ -6540,7 +6546,7 @@ qemuBuildGlobalControllerCommandLine(virCommandPtr cm= d, bool cap =3D false; bool machine =3D false; =20 - switch ((virDomainControllerModelPCI) cont->model) { + switch (cont->model) { case VIR_DOMAIN_CONTROLLER_MODEL_PCI_ROOT: hoststr =3D "i440FX-pcihost"; cap =3D virQEMUCapsGet(qemuCaps, QEMU_CAPS_I440FX_PCI_HOLE= 64_SIZE); @@ -6883,7 +6889,7 @@ qemuBuildCpuCommandLine(virCommandPtr cmd, if (cpu_flags && !cpu) { const char *default_model; =20 - switch (def->os.arch) { + switch ((int)def->os.arch) { case VIR_ARCH_I686: default_model =3D "qemu32"; break; @@ -6929,7 +6935,7 @@ qemuBuildObsoleteAccelArg(virCommandPtr cmd, bool disableKVM =3D false; bool enableKVM =3D false; =20 - switch (def->virtType) { + switch ((int)def->virtType) { case VIR_DOMAIN_VIRT_QEMU: if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_KVM)) disableKVM =3D true; @@ -7903,8 +7909,14 @@ qemuBuildGraphicsSPICECommandLine(virQEMUDriverConfi= gPtr cfg, case VIR_DOMAIN_GRAPHICS_SPICE_MOUSE_MODE_CLIENT: virBufferAddLit(&opt, "agent-mouse=3Don,"); break; - default: + case VIR_DOMAIN_GRAPHICS_SPICE_MOUSE_MODE_DEFAULT: break; + case VIR_DOMAIN_GRAPHICS_SPICE_MOUSE_MODE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected mouse mode %d"), + graphics->data.spice.mousemode); + goto error; } } =20 diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index e114f5dfcf..7697de69e4 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -2806,6 +2806,27 @@ qemuDomainDefAddDefaultDevices(virDomainDefPtr def, addPCIRoot =3D true; break; =20 + case VIR_ARCH_ARMV6L: + case VIR_ARCH_ARMV7B: + case VIR_ARCH_CRIS: + case VIR_ARCH_ITANIUM: + case VIR_ARCH_LM32: + case VIR_ARCH_M68K: + case VIR_ARCH_MICROBLAZE: + case VIR_ARCH_MICROBLAZEEL: + case VIR_ARCH_MIPS: + case VIR_ARCH_MIPSEL: + case VIR_ARCH_MIPS64: + case VIR_ARCH_MIPS64EL: + case VIR_ARCH_OR32: + case VIR_ARCH_PARISC: + case VIR_ARCH_PARISC64: + case VIR_ARCH_PPCLE: + case VIR_ARCH_UNICORE32: + case VIR_ARCH_XTENSA: + case VIR_ARCH_XTENSAEB: + case VIR_ARCH_NONE: + case VIR_ARCH_LAST: default: break; } diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index bbce5bd81b..0b8976010f 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -3041,13 +3041,8 @@ qemuCompressGetCommand(virQEMUSaveFormat compression) ret =3D virCommandNew(prog); virCommandAddArg(ret, "-dc"); =20 - switch (compression) { - case QEMU_SAVE_FORMAT_LZOP: + if (compression =3D=3D QEMU_SAVE_FORMAT_LZOP) virCommandAddArg(ret, "--ignore-warn"); - break; - default: - break; - } =20 return ret; } @@ -17820,11 +17815,19 @@ qemuDomainOpenGraphics(virDomainPtr dom, case VIR_DOMAIN_GRAPHICS_TYPE_SPICE: protocol =3D "spice"; break; - default: + case VIR_DOMAIN_GRAPHICS_TYPE_SDL: + case VIR_DOMAIN_GRAPHICS_TYPE_RDP: + case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Can only open VNC or SPICE graphics backends, no= t %s"), virDomainGraphicsTypeToString(vm->def->graphics[idx= ]->type)); goto endjob; + case VIR_DOMAIN_GRAPHICS_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected graphics type %d"), + vm->def->graphics[idx]->type); + goto endjob; } =20 if (qemuSecuritySetImageFDLabel(driver->securityManager, vm->def, fd) = < 0) @@ -17884,11 +17887,19 @@ qemuDomainOpenGraphicsFD(virDomainPtr dom, case VIR_DOMAIN_GRAPHICS_TYPE_SPICE: protocol =3D "spice"; break; - default: + case VIR_DOMAIN_GRAPHICS_TYPE_SDL: + case VIR_DOMAIN_GRAPHICS_TYPE_RDP: + case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Can only open VNC or SPICE graphics backends, no= t %s"), virDomainGraphicsTypeToString(vm->def->graphics[idx= ]->type)); goto cleanup; + case VIR_DOMAIN_GRAPHICS_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected graphics type %d"), + vm->def->graphics[idx]->type); + goto cleanup; } =20 if (qemuSecuritySetSocketLabel(driver->securityManager, vm->def) < 0) diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index c9868de778..0d7d02c25b 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -2992,11 +2992,25 @@ qemuDomainChangeNetFilter(virDomainObjPtr vm, case VIR_DOMAIN_NET_TYPE_BRIDGE: case VIR_DOMAIN_NET_TYPE_NETWORK: break; - default: + case VIR_DOMAIN_NET_TYPE_USER: + case VIR_DOMAIN_NET_TYPE_VHOSTUSER: + case VIR_DOMAIN_NET_TYPE_SERVER: + case VIR_DOMAIN_NET_TYPE_CLIENT: + case VIR_DOMAIN_NET_TYPE_MCAST: + case VIR_DOMAIN_NET_TYPE_INTERNAL: + case VIR_DOMAIN_NET_TYPE_DIRECT: + case VIR_DOMAIN_NET_TYPE_HOSTDEV: + case VIR_DOMAIN_NET_TYPE_UDP: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("filters not supported on interfaces of type %s"), virDomainNetTypeToString(virDomainNetGetActualType(= newdev))); return -1; + case VIR_DOMAIN_NET_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected net type %d"), + virDomainNetGetActualType(newdev)); + return -1; } =20 virDomainConfNWFilterTeardown(olddev); @@ -3291,12 +3305,17 @@ qemuDomainChangeNet(virQEMUDriverPtr driver, /* all handled in common code directly below this switch */ break; =20 - default: + case VIR_DOMAIN_NET_TYPE_VHOSTUSER: + case VIR_DOMAIN_NET_TYPE_HOSTDEV: virReportError(VIR_ERR_OPERATION_UNSUPPORTED, _("unable to change config on '%s' network type= "), virDomainNetTypeToString(newdev->type)); - break; - + goto cleanup; + case VIR_DOMAIN_NET_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected net type %d"), newdev->type); + goto cleanup; } } else { /* interface type has changed. There are a few special cases @@ -3675,10 +3694,17 @@ qemuDomainChangeGraphics(virQEMUDriverPtr driver, } break; =20 - default: + case VIR_DOMAIN_GRAPHICS_TYPE_SDL: + case VIR_DOMAIN_GRAPHICS_TYPE_RDP: + case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP: virReportError(VIR_ERR_INTERNAL_ERROR, _("unable to change config on '%s' graphics type"),= type); break; + case VIR_DOMAIN_GRAPHICS_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected graphics type %d"), dev->type); + break; } =20 cleanup: diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 3641b801f6..fe3342b38d 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -1437,11 +1437,20 @@ qemuMigrationJobName(virDomainObjPtr vm) =20 switch (priv->job.asyncJob) { case QEMU_ASYNC_JOB_MIGRATION_OUT: - return _("migration job"); + return _("migration out job"); case QEMU_ASYNC_JOB_SAVE: return _("domain save job"); case QEMU_ASYNC_JOB_DUMP: return _("domain core dump job"); + case QEMU_ASYNC_JOB_NONE: + return _("no job"); + case QEMU_ASYNC_JOB_MIGRATION_IN: + return _("migration in job"); + case QEMU_ASYNC_JOB_SNAPSHOT: + return _("snapshot job"); + case QEMU_ASYNC_JOB_START: + return _("start job"); + case QEMU_ASYNC_JOB_LAST: default: return _("job"); } diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 10211de871..b86ecda93f 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -690,6 +690,8 @@ qemuProcessHandleShutdown(qemuMonitorPtr mon ATTRIBUTE_= UNUSED, detail =3D VIR_DOMAIN_EVENT_SHUTDOWN_HOST; break; =20 + case VIR_TRISTATE_BOOL_ABSENT: + case VIR_TRISTATE_BOOL_LAST: default: detail =3D VIR_DOMAIN_EVENT_SHUTDOWN_FINISHED; break; --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713498883254.11961033427485; Thu, 15 Feb 2018 08:51:38 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 0B28012BBE; Thu, 15 Feb 2018 16:51:37 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id CD05360C8D; Thu, 15 Feb 2018 16:51:36 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 82EA34A473; Thu, 15 Feb 2018 16:51:36 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGhvfX025696 for ; Thu, 15 Feb 2018 11:43:57 -0500 Received: by smtp.corp.redhat.com (Postfix) id 8E1CF2024CAB; Thu, 15 Feb 2018 16:43:57 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id 2FA432024CA8; Thu, 15 Feb 2018 16:43:57 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:15 +0000 Message-Id: <20180215164347.11538-11-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 10/42] rpc: handle missing switch enum cases X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Thu, 15 Feb 2018 16:51:37 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Ensure all enum cases are listed in switch statements. Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: John Ferlan --- src/rpc/virnetclient.c | 2 ++ src/rpc/virnetclientprogram.c | 1 + src/rpc/virnetserverprogram.c | 4 ++++ 3 files changed, 7 insertions(+) diff --git a/src/rpc/virnetclient.c b/src/rpc/virnetclient.c index 8aeacf8774..0c8d58c32c 100644 --- a/src/rpc/virnetclient.c +++ b/src/rpc/virnetclient.c @@ -1287,6 +1287,8 @@ virNetClientCallDispatch(virNetClientPtr client) case VIR_NET_STREAM_HOLE: /* Sparse stream protocol*/ return virNetClientCallDispatchStream(client); =20 + case VIR_NET_CALL: + case VIR_NET_CALL_WITH_FDS: default: virReportError(VIR_ERR_RPC, _("got unexpected RPC call prog %d vers %d proc %d = type %d"), diff --git a/src/rpc/virnetclientprogram.c b/src/rpc/virnetclientprogram.c index d81a055424..505b40fc4b 100644 --- a/src/rpc/virnetclientprogram.c +++ b/src/rpc/virnetclientprogram.c @@ -384,6 +384,7 @@ int virNetClientProgramCall(virNetClientProgramPtr prog, virNetClientProgramDispatchError(prog, msg); goto error; =20 + case VIR_NET_CONTINUE: default: virReportError(VIR_ERR_RPC, _("Unexpected message status %d"), msg->header.stat= us); diff --git a/src/rpc/virnetserverprogram.c b/src/rpc/virnetserverprogram.c index 557651ffbd..75b0052cdb 100644 --- a/src/rpc/virnetserverprogram.c +++ b/src/rpc/virnetserverprogram.c @@ -324,6 +324,10 @@ int virNetServerProgramDispatch(virNetServerProgramPtr= prog, ret =3D 0; break; =20 + case VIR_NET_REPLY: + case VIR_NET_REPLY_WITH_FDS: + case VIR_NET_MESSAGE: + case VIR_NET_STREAM_HOLE: default: virReportError(VIR_ERR_RPC, _("Unexpected message type %u"), --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713509051504.4728577829619; Thu, 15 Feb 2018 08:51:49 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id CA369C04FF87; Thu, 15 Feb 2018 16:51:47 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 927EE5D731; Thu, 15 Feb 2018 16:51:47 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 5281518033EC; Thu, 15 Feb 2018 16:51:47 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGhwfB025706 for ; Thu, 15 Feb 2018 11:43:58 -0500 Received: by smtp.corp.redhat.com (Postfix) id 24C6B2024CAB; Thu, 15 Feb 2018 16:43:58 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id BC3AA2024CA8; Thu, 15 Feb 2018 16:43:57 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:16 +0000 Message-Id: <20180215164347.11538-12-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 11/42] security: handle missing switch enum cases X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Thu, 15 Feb 2018 16:51:48 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Ensure all enum cases are listed in switch statements. Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: John Ferlan --- src/security/security_driver.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/security/security_driver.c b/src/security/security_driver.c index 4800d5255a..a845dc7995 100644 --- a/src/security/security_driver.c +++ b/src/security/security_driver.c @@ -82,6 +82,7 @@ virSecurityDriverPtr virSecurityDriverLookup(const char *= name, } break; =20 + case SECURITY_DRIVER_ERROR: default: return NULL; } --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713521109397.82392345247024; Thu, 15 Feb 2018 08:52:01 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D14F310F3DE; Thu, 15 Feb 2018 16:51:59 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A211560C90; Thu, 15 Feb 2018 16:51:59 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 685094A475; Thu, 15 Feb 2018 16:51:59 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGhwpH025718 for ; Thu, 15 Feb 2018 11:43:58 -0500 Received: by smtp.corp.redhat.com (Postfix) id AF52A2026609; Thu, 15 Feb 2018 16:43:58 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id 52C382024CA8; Thu, 15 Feb 2018 16:43:58 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:17 +0000 Message-Id: <20180215164347.11538-13-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 12/42] xen: handle missing switch enum cases X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Thu, 15 Feb 2018 16:52:00 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Ensure all enum cases are listed in switch statements. Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: John Ferlan --- src/vmx/vmx.c | 27 +++++++++++++++++++++++++-- src/xenconfig/xen_common.c | 17 +++++++++++++++-- src/xenconfig/xen_xl.c | 8 +++++++- 3 files changed, 47 insertions(+), 5 deletions(-) diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c index 7a749f93ab..5855a11c88 100644 --- a/src/vmx/vmx.c +++ b/src/vmx/vmx.c @@ -3283,11 +3283,19 @@ virVMXFormatConfig(virVMXContext *ctx, virDomainXML= OptionPtr xmlopt, virDomainDe =20 break; =20 - default: + case VIR_DOMAIN_GRAPHICS_TYPE_SDL: + case VIR_DOMAIN_GRAPHICS_TYPE_RDP: + case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP: + case VIR_DOMAIN_GRAPHICS_TYPE_SPICE: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Unsupported graphics type '%s'"), virDomainGraphicsTypeToString(def->graphics[i]-= >type)); goto cleanup; + + case VIR_DOMAIN_GRAPHICS_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected graphics type %d"), def->graphi= cs[i]->type); } } =20 @@ -3782,10 +3790,25 @@ virVMXFormatEthernet(virDomainNetDefPtr def, int co= ntroller, controller); break; =20 - default: + case VIR_DOMAIN_NET_TYPE_ETHERNET: + case VIR_DOMAIN_NET_TYPE_VHOSTUSER: + case VIR_DOMAIN_NET_TYPE_SERVER: + case VIR_DOMAIN_NET_TYPE_CLIENT: + case VIR_DOMAIN_NET_TYPE_MCAST: + case VIR_DOMAIN_NET_TYPE_NETWORK: + case VIR_DOMAIN_NET_TYPE_INTERNAL: + case VIR_DOMAIN_NET_TYPE_DIRECT: + case VIR_DOMAIN_NET_TYPE_HOSTDEV: + case VIR_DOMAIN_NET_TYPE_UDP: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Unsupported net type= '%s'"), virDomainNetTypeToString(def->type)); return -1; + + case VIR_DOMAIN_NET_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected network type %d"), def->type); + return -1; } =20 /* def:mac -> vmx:addressType, vmx:(generated)Address, vmx:checkMACAdd= ress */ diff --git a/src/xenconfig/xen_common.c b/src/xenconfig/xen_common.c index ca3b4dee6a..c3fe5d39dc 100644 --- a/src/xenconfig/xen_common.c +++ b/src/xenconfig/xen_common.c @@ -1258,10 +1258,23 @@ xenFormatNet(virConnectPtr conn, } break; =20 + case VIR_DOMAIN_NET_TYPE_VHOSTUSER: + case VIR_DOMAIN_NET_TYPE_SERVER: + case VIR_DOMAIN_NET_TYPE_CLIENT: + case VIR_DOMAIN_NET_TYPE_MCAST: + case VIR_DOMAIN_NET_TYPE_INTERNAL: + case VIR_DOMAIN_NET_TYPE_DIRECT: + case VIR_DOMAIN_NET_TYPE_HOSTDEV: + case VIR_DOMAIN_NET_TYPE_UDP: + case VIR_DOMAIN_NET_TYPE_USER: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Unsupported net type= '%s'"), + virDomainNetTypeToString(net->type)); + goto cleanup; + + case VIR_DOMAIN_NET_TYPE_LAST: default: virReportError(VIR_ERR_INTERNAL_ERROR, - _("unsupported network type %d"), - net->type); + _("Unexpected network type %d"), net->type); goto cleanup; } =20 diff --git a/src/xenconfig/xen_xl.c b/src/xenconfig/xen_xl.c index 2ef80eb83a..e61784aff2 100644 --- a/src/xenconfig/xen_xl.c +++ b/src/xenconfig/xen_xl.c @@ -1641,8 +1641,14 @@ xenFormatXLSpice(virConfPtr conf, virDomainDefPtr de= f) if (xenConfigSetInt(conf, "spicevdagent", 1) < 0) return -1; break; - default: + case VIR_DOMAIN_GRAPHICS_SPICE_MOUSE_MODE_DEFAULT: break; + case VIR_DOMAIN_GRAPHICS_SPICE_MOUSE_MODE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected mouse mode %d"), + graphics->data.spice.mousemode); + return -1; } } =20 --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713512029667.415089338953; Thu, 15 Feb 2018 08:51:52 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id A738A10F3F7; Thu, 15 Feb 2018 16:51:50 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 7BFB218389; Thu, 15 Feb 2018 16:51:48 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id EF17918033F0; Thu, 15 Feb 2018 16:51:47 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGhx4l025725 for ; Thu, 15 Feb 2018 11:43:59 -0500 Received: by smtp.corp.redhat.com (Postfix) id 46D062024CAA; Thu, 15 Feb 2018 16:43:59 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id DD8A82024CA8; Thu, 15 Feb 2018 16:43:58 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:18 +0000 Message-Id: <20180215164347.11538-14-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 13/42] tools: handle missing switch enum cases X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Thu, 15 Feb 2018 16:51:51 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Cast away enum type in places where we don't wish to cover all cases. Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: John Ferlan --- tools/virt-host-validate-qemu.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/virt-host-validate-qemu.c b/tools/virt-host-validate-qem= u.c index 2aa396e3ab..d7573ea8b3 100644 --- a/tools/virt-host-validate-qemu.c +++ b/tools/virt-host-validate-qemu.c @@ -33,13 +33,14 @@ int virHostValidateQEMU(void) int ret =3D 0; bool hasHwVirt =3D false; bool hasVirtFlag =3D false; + virArch arch =3D virArchFromHost(); const char *kvmhint =3D _("Check that CPU and firmware supports virtua= lization " "and kvm module is loaded"); =20 if (!(flags =3D virHostValidateGetCPUFlags())) return -1; =20 - switch (virArchFromHost()) { + switch ((int)arch) { case VIR_ARCH_I686: case VIR_ARCH_X86_64: hasVirtFlag =3D true; --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713685413333.40362585482274; Thu, 15 Feb 2018 08:54:45 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 00FD461D07; Thu, 15 Feb 2018 16:54:42 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id AF4886A948; Thu, 15 Feb 2018 16:54:41 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 588DE1833910; Thu, 15 Feb 2018 16:54:41 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGhxNB025730 for ; Thu, 15 Feb 2018 11:44:00 -0500 Received: by smtp.corp.redhat.com (Postfix) id D25B02024CAA; Thu, 15 Feb 2018 16:43:59 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id 754122024CA8; Thu, 15 Feb 2018 16:43:59 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:19 +0000 Message-Id: <20180215164347.11538-15-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 14/42] m4: enforce that all enum cases are listed in switch statements X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Thu, 15 Feb 2018 16:54:42 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 As a general rule any time we switch() on something that is an enum, we want to have a case for every enum constant. The -Wswitch warning will report any switch where we've violated this rule, except if that switch has a default case. Unfortunately it is reasonable to want to list all enum constants *and* also have a default case. To get a warning in that scenario requires that we turn on -Wswitch-enum. In a few cases where we explicitly don't want to list all enum cases, we can discard the enum type checking by casting the value to a plain int. Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: John Ferlan --- m4/virt-compile-warnings.m4 | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/m4/virt-compile-warnings.m4 b/m4/virt-compile-warnings.m4 index b9c9748420..918764d362 100644 --- a/m4/virt-compile-warnings.m4 +++ b/m4/virt-compile-warnings.m4 @@ -47,8 +47,6 @@ AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[ dontwarn=3D"$dontwarn -Wlong-long" # We allow manual list of all enum cases without default: dontwarn=3D"$dontwarn -Wswitch-default" - # We allow optional default: instead of listing all enum values - dontwarn=3D"$dontwarn -Wswitch-enum" # Not a problem since we don't use -fstrict-overflow dontwarn=3D"$dontwarn -Wstrict-overflow" # Not a problem since we don't use -funsafe-loop-optimizations @@ -182,6 +180,11 @@ AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[ # that one off, so we need to manually enable this again wantwarn=3D"$wantwarn -Wjump-misses-init" =20 + # GNULIB explicitly filters it out, preferring -Wswitch + # but that doesn't report missing enums if a default: + # is present. + wantwarn=3D"$wantwarn -Wswitch-enum" + # GNULIB turns on -Wformat=3D2 which implies -Wformat-nonliteral, # so we need to manually re-exclude it. Also, older gcc 4.2 # added an implied ATTRIBUTE_NONNULL on any parameter marked --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 151871353303794.94937774310165; Thu, 15 Feb 2018 08:52:13 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id A402B62E88; Thu, 15 Feb 2018 16:52:11 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 7571469284; Thu, 15 Feb 2018 16:52:11 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 3A17218033F4; Thu, 15 Feb 2018 16:52:11 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGi0Sh025739 for ; Thu, 15 Feb 2018 11:44:00 -0500 Received: by smtp.corp.redhat.com (Postfix) id 6865D2024CAB; Thu, 15 Feb 2018 16:44:00 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0BC7F2024CA8; Thu, 15 Feb 2018 16:43:59 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:20 +0000 Message-Id: <20180215164347.11538-16-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 15/42] m4: disable gcc8 -Wcast-function-type warnings from -Wextra X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Thu, 15 Feb 2018 16:52:12 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 The -Wextra flag bundle gained a new warning -Wcast-function-type. This complains if you cast between two function prototypes where the number of parameters or their data types are not compatible. Unfortunately we need such "bad" function casts for our event callbacks. It is possible to silence the warning by first casting to the generic "void (*)(void)" function prototype, but that is rather ugly to add throughout libvirt code. Signed-off-by: Daniel P. Berrang=C3=A9 --- m4/virt-compile-warnings.m4 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/m4/virt-compile-warnings.m4 b/m4/virt-compile-warnings.m4 index 918764d362..fc185aef38 100644 --- a/m4/virt-compile-warnings.m4 +++ b/m4/virt-compile-warnings.m4 @@ -175,6 +175,8 @@ AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[ # with gl_MANYWARN_COMPLEMENT # So we have -W enabled, and then have to explicitly turn off... wantwarn=3D"$wantwarn -Wno-sign-compare" + # We do "bad" function casts all the time for event callbacks + wantwarn=3D"$wantwarn -Wno-cast-function-type" =20 # GNULIB expects this to be part of -Wc++-compat, but we turn # that one off, so we need to manually enable this again --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713690953263.78702902500163; Thu, 15 Feb 2018 08:54:50 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 60979C0587FF; Thu, 15 Feb 2018 16:54:49 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 3989463F7A; Thu, 15 Feb 2018 16:54:49 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 03F314EE57; Thu, 15 Feb 2018 16:54:49 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGi15g025750 for ; Thu, 15 Feb 2018 11:44:01 -0500 Received: by smtp.corp.redhat.com (Postfix) id 1551F200BC0F; Thu, 15 Feb 2018 16:44:01 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9628E2024CA8; Thu, 15 Feb 2018 16:44:00 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:21 +0000 Message-Id: <20180215164347.11538-17-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 16/42] util: add default: case to all switch statements X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Thu, 15 Feb 2018 16:54:49 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Even if the compiler has validated that all enum constants have case statements in a switch, it is not safe to omit a default: case statement. When assigning a value to a variable / struct field that is defined with an enum type, nothing prevents an invalid value being assigned. So defensive code must assume existance of invalid values and thus all switches should have a default: case. Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: John Ferlan --- src/libvirt.c | 3 +++ src/util/vircgroup.c | 1 + src/util/vircrypto.c | 2 ++ src/util/virerror.c | 6 +++++- src/util/virfdstream.c | 4 ++++ src/util/virfirewall.c | 1 + src/util/virhook.c | 12 +++++------ src/util/virhostdev.c | 8 +++++++- src/util/virhostmem.c | 5 +++++ src/util/virjson.c | 5 +++++ src/util/virlog.c | 7 +++++-- src/util/virnetdev.c | 1 + src/util/virnetdevmacvlan.c | 3 +++ src/util/virnetdevvportprofile.c | 43 ++++++++++++++++++++++++++++++++++--= ---- src/util/virnuma.c | 5 ++++- src/util/virprocess.c | 1 + src/util/virqemu.c | 5 +++++ src/util/virsexpr.c | 2 ++ src/util/virsocketaddr.c | 13 +++++++----- src/util/virstoragefile.c | 15 ++++++++++++-- 20 files changed, 118 insertions(+), 24 deletions(-) diff --git a/src/libvirt.c b/src/libvirt.c index 536d56f0a5..6eb265c2d7 100644 --- a/src/libvirt.c +++ b/src/libvirt.c @@ -503,6 +503,9 @@ DllMain(HINSTANCE instance ATTRIBUTE_UNUSED, since (hopefully) windows cleans up everything on process exit */ break; + + default: + break; } =20 return TRUE; diff --git a/src/util/vircgroup.c b/src/util/vircgroup.c index 0a31947b0d..1b256af92f 100644 --- a/src/util/vircgroup.c +++ b/src/util/vircgroup.c @@ -1495,6 +1495,7 @@ virCgroupNewThread(virCgroupPtr domain, goto cleanup; break; case VIR_CGROUP_THREAD_LAST: + default: virReportError(VIR_ERR_INTERNAL_ERROR, _("unexpected name value %d"), nameval); goto cleanup; diff --git a/src/util/vircrypto.c b/src/util/vircrypto.c index 48b04fc8ce..dbbe2f7fd5 100644 --- a/src/util/vircrypto.c +++ b/src/util/vircrypto.c @@ -112,6 +112,7 @@ virCryptoHaveCipher(virCryptoCipher algorithm) =20 case VIR_CRYPTO_CIPHER_NONE: case VIR_CRYPTO_CIPHER_LAST: + default: break; }; =20 @@ -263,6 +264,7 @@ virCryptoEncryptData(virCryptoCipher algorithm, =20 case VIR_CRYPTO_CIPHER_NONE: case VIR_CRYPTO_CIPHER_LAST: + default: break; } =20 diff --git a/src/util/virerror.c b/src/util/virerror.c index c000b00436..35f819e4e4 100644 --- a/src/util/virerror.c +++ b/src/util/virerror.c @@ -51,9 +51,9 @@ static virLogPriority virErrorLevelPriority(virErrorLevel= level) case VIR_ERR_WARNING: return VIR_LOG_WARN; case VIR_ERR_ERROR: + default: return VIR_LOG_ERROR; } - return VIR_LOG_ERROR; } =20 =20 @@ -616,6 +616,7 @@ virDefaultErrorFunc(virErrorPtr err) lvl =3D _("warning"); break; case VIR_ERR_ERROR: + default: lvl =3D _("error"); break; } @@ -1459,6 +1460,9 @@ virErrorMsg(virErrorNumber error, const char *info) else errmsg =3D _("device not found: %s"); break; + default: + errmsg =3D _("unexpected error code"); + break; } return errmsg; } diff --git a/src/util/virfdstream.c b/src/util/virfdstream.c index be40379a92..d877e874e8 100644 --- a/src/util/virfdstream.c +++ b/src/util/virfdstream.c @@ -204,6 +204,7 @@ virFDStreamMsgFree(virFDStreamMsgPtr msg) VIR_FREE(msg->stream.data.buf); break; case VIR_FDSTREAM_MSG_TYPE_HOLE: + default: /* nada */ break; } @@ -560,6 +561,9 @@ virFDStreamThreadDoWrite(virFDStreamDataPtr fdst, =20 pop =3D true; break; + + default: + break; } =20 if (pop) { diff --git a/src/util/virfirewall.c b/src/util/virfirewall.c index e7da482640..b50890cef6 100644 --- a/src/util/virfirewall.c +++ b/src/util/virfirewall.c @@ -378,6 +378,7 @@ virFirewallAddRuleFullV(virFirewallPtr firewall, ADD_ARG(rule, "-w"); break; case VIR_FIREWALL_LAYER_LAST: + default: break; } =20 diff --git a/src/util/virhook.c b/src/util/virhook.c index facd74aeff..cf104d0234 100644 --- a/src/util/virhook.c +++ b/src/util/virhook.c @@ -277,12 +277,12 @@ virHookCall(int driver, break; case VIR_HOOK_DRIVER_NETWORK: opstr =3D virHookNetworkOpTypeToString(op); - } - if (opstr =3D=3D NULL) { - virReportError(VIR_ERR_INTERNAL_ERROR, - _("Hook for %s, failed to find operation #%d"), - drvstr, op); - return 1; + break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Hook for %s, failed to find operation #%d"), + drvstr, op); + return 1; } subopstr =3D virHookSubopTypeToString(sub_op); if (subopstr =3D=3D NULL) diff --git a/src/util/virhostdev.c b/src/util/virhostdev.c index a12224c58f..889391d45b 100644 --- a/src/util/virhostdev.c +++ b/src/util/virhostdev.c @@ -391,7 +391,6 @@ virHostdevNetConfigVirtPortProfile(const char *linkdev,= int vf, case VIR_NETDEV_VPORT_PROFILE_NONE: case VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH: case VIR_NETDEV_VPORT_PROFILE_8021QBG: - case VIR_NETDEV_VPORT_PROFILE_LAST: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("virtualport type %s is " "currently not supported on interfaces of type " @@ -409,6 +408,13 @@ virHostdevNetConfigVirtPortProfile(const char *linkdev= , int vf, macaddr, linkdev, vf, VIR_NETDEV_VPORT_PROFI= LE_OP_DESTROY); break; + + case VIR_NETDEV_VPORT_PROFILE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected port profile %d"), + virtPort->virtPortType); + break; } =20 return ret; diff --git a/src/util/virhostmem.c b/src/util/virhostmem.c index 11efe8c502..26576a73cc 100644 --- a/src/util/virhostmem.c +++ b/src/util/virhostmem.c @@ -608,6 +608,11 @@ virHostMemGetParameters(virTypedParameterPtr params AT= TRIBUTE_UNUSED, return -1; =20 break; + + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected parameter number %zu"), i); + return -1; } } =20 diff --git a/src/util/virjson.c b/src/util/virjson.c index 14b68b8c93..586feac89f 100644 --- a/src/util/virjson.c +++ b/src/util/virjson.c @@ -369,6 +369,7 @@ virJSONValueFree(virJSONValuePtr value) break; case VIR_JSON_TYPE_BOOLEAN: case VIR_JSON_TYPE_NULL: + default: break; } =20 @@ -1439,6 +1440,10 @@ virJSONValueCopy(const virJSONValue *in) case VIR_JSON_TYPE_NULL: out =3D virJSONValueNewNull(); break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected JSON type %d"), in->type); + break; } =20 return out; diff --git a/src/util/virlog.c b/src/util/virlog.c index ecbee71cfb..d36aad3de5 100644 --- a/src/util/virlog.c +++ b/src/util/virlog.c @@ -253,8 +253,9 @@ virLogPriorityString(virLogPriority lvl) return "warning"; case VIR_LOG_ERROR: return "error"; + default: + return "unknown"; } - return "unknown"; } =20 =20 @@ -1122,8 +1123,9 @@ int virLogPriorityFromSyslog(int priority) return VIR_LOG_INFO; case LOG_DEBUG: return VIR_LOG_DEBUG; + default: + return VIR_LOG_ERROR; } - return VIR_LOG_ERROR; } =20 #else /* HAVE_SYSLOG_H */ @@ -1640,6 +1642,7 @@ virLogParseOutput(const char *src) #endif break; case VIR_LOG_TO_OUTPUT_LAST: + default: break; } =20 diff --git a/src/util/virnetdev.c b/src/util/virnetdev.c index b250af9e2c..b185900bd6 100644 --- a/src/util/virnetdev.c +++ b/src/util/virnetdev.c @@ -2802,6 +2802,7 @@ static int virNetDevParseMcast(char *buf, virNetDevMc= astEntryPtr mcast) =20 /* coverity[dead_error_begin] */ case VIR_MCAST_TYPE_LAST: + default: break; } } diff --git a/src/util/virnetdevmacvlan.c b/src/util/virnetdevmacvlan.c index fb41bf934c..efd505c062 100644 --- a/src/util/virnetdevmacvlan.c +++ b/src/util/virnetdevmacvlan.c @@ -694,6 +694,9 @@ virNetDevMacVLanVPortProfileCallback(struct nlmsghdr *h= dr, ((struct ifinfomsg *)data)->ifi_flags); VIR_DEBUG(" ifi_change =3D 0x%04x", ((struct ifinfomsg *)data)->ifi_change); + break; + default: + break; } /* DEBUG end */ =20 diff --git a/src/util/virnetdevvportprofile.c b/src/util/virnetdevvportprof= ile.c index 4c0a64e439..1e2a293e8a 100644 --- a/src/util/virnetdevvportprofile.c +++ b/src/util/virnetdevvportprofile.c @@ -147,7 +147,7 @@ virNetDevVPortProfileCheckComplete(virNetDevVPortProfil= ePtr virtport, if (!virtport || virtport->virtPortType =3D=3D VIR_NETDEV_VPORT_PROFIL= E_NONE) return 0; =20 - switch (virtport->virtPortType) { + switch ((enum virNetDevVPortProfile)virtport->virtPortType) { case VIR_NETDEV_VPORT_PROFILE_8021QBG: if (!virtport->managerID_specified) { missing =3D "managerid"; @@ -194,6 +194,15 @@ virNetDevVPortProfileCheckComplete(virNetDevVPortProfi= lePtr virtport, if (!virtport->interfaceID_specified) missing =3D "interfaceid"; break; + + case VIR_NETDEV_VPORT_PROFILE_NONE: + break; + + case VIR_NETDEV_VPORT_PROFILE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected port profile type %d"), virtport->vir= tPortType); + return -1; } =20 if (missing) { @@ -220,7 +229,7 @@ virNetDevVPortProfileCheckNoExtras(virNetDevVPortProfil= ePtr virtport) if (!virtport || virtport->virtPortType =3D=3D VIR_NETDEV_VPORT_PROFIL= E_NONE) return 0; =20 - switch (virtport->virtPortType) { + switch ((enum virNetDevVPortProfile)virtport->virtPortType) { case VIR_NETDEV_VPORT_PROFILE_8021QBG: if (virtport->profileID[0]) extra =3D "profileid"; @@ -251,6 +260,16 @@ virNetDevVPortProfileCheckNoExtras(virNetDevVPortProfi= lePtr virtport) else if (virtport->instanceID_specified) extra =3D "instanceid"; break; + + case VIR_NETDEV_VPORT_PROFILE_MIDONET: + case VIR_NETDEV_VPORT_PROFILE_NONE: + break; + + case VIR_NETDEV_VPORT_PROFILE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected port profile type %d"), virtport->vir= tPortType); + return -1; } =20 if (extra) { @@ -1254,10 +1273,10 @@ virNetDevVPortProfileAssociate(const char *macvtap_= ifname, if (!virtPort || vmOp =3D=3D VIR_NETDEV_VPORT_PROFILE_OP_NO_OP) return 0; =20 - switch (virtPort->virtPortType) { + switch ((enum virNetDevVPortProfile)virtPort->virtPortType) { case VIR_NETDEV_VPORT_PROFILE_NONE: + case VIR_NETDEV_VPORT_PROFILE_MIDONET: case VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH: - case VIR_NETDEV_VPORT_PROFILE_LAST: break; =20 case VIR_NETDEV_VPORT_PROFILE_8021QBG: @@ -1281,6 +1300,12 @@ virNetDevVPortProfileAssociate(const char *macvtap_i= fname, } =20 break; + + case VIR_NETDEV_VPORT_PROFILE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected port profile type %d"), virtPort->vir= tPortType); + break; } =20 return rc; @@ -1319,10 +1344,10 @@ virNetDevVPortProfileDisassociate(const char *macvt= ap_ifname, if (!virtPort) return 0; =20 - switch (virtPort->virtPortType) { + switch ((enum virNetDevVPortProfile)virtPort->virtPortType) { case VIR_NETDEV_VPORT_PROFILE_NONE: + case VIR_NETDEV_VPORT_PROFILE_MIDONET: case VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH: - case VIR_NETDEV_VPORT_PROFILE_LAST: break; =20 case VIR_NETDEV_VPORT_PROFILE_8021QBG: @@ -1341,6 +1366,12 @@ virNetDevVPortProfileDisassociate(const char *macvta= p_ifname, virtPort, NULL, VIR_NETDEV_VPORT_PROFILE_LINK_= OP_DISASSOCIATE); break; + + case VIR_NETDEV_VPORT_PROFILE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected port profile type %d"), virtPort->vir= tPortType); + break; } =20 return rc; diff --git a/src/util/virnuma.c b/src/util/virnuma.c index bebe301f8d..bf7db7256a 100644 --- a/src/util/virnuma.c +++ b/src/util/virnuma.c @@ -152,7 +152,10 @@ virNumaSetupMemoryPolicy(virDomainNumatuneMemMode mode, break; =20 case VIR_DOMAIN_NUMATUNE_MEM_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected NUMA tune mode %d"), mode); + goto cleanup; } ret =3D 0; =20 diff --git a/src/util/virprocess.c b/src/util/virprocess.c index 1fbbbb3a27..a4801c7f04 100644 --- a/src/util/virprocess.c +++ b/src/util/virprocess.c @@ -1343,6 +1343,7 @@ virProcessSchedTranslatePolicy(virProcessSchedPolicy = policy) return SCHED_RR; =20 case VIR_PROC_POLICY_LAST: + default: /* nada */ break; } diff --git a/src/util/virqemu.c b/src/util/virqemu.c index 2e9e65f9ef..b2932255b2 100644 --- a/src/util/virqemu.c +++ b/src/util/virqemu.c @@ -207,6 +207,11 @@ virQEMUBuildCommandLineJSONRecurse(const char *key, virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("NULL JSON type can't be converted to commandline= ")); return -1; + + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected JSON type %d"), value->type); + return -1; } =20 return 0; diff --git a/src/util/virsexpr.c b/src/util/virsexpr.c index 885c382a5f..9ed371799e 100644 --- a/src/util/virsexpr.c +++ b/src/util/virsexpr.c @@ -78,6 +78,8 @@ sexpr_free(struct sexpr *sexpr) break; case SEXPR_NIL: break; + default: + break; } =20 VIR_FREE(sexpr); diff --git a/src/util/virsocketaddr.c b/src/util/virsocketaddr.c index 95b5274368..078f99775b 100644 --- a/src/util/virsocketaddr.c +++ b/src/util/virsocketaddr.c @@ -281,8 +281,9 @@ virSocketAddrEqual(const virSocketAddr *s1, const virSo= cketAddr *s2) &s2->data.inet6.sin6_addr.s6_addr, sizeof(s1->data.inet6.sin6_addr.s6_addr)) =3D=3D 0 = && s1->data.inet6.sin6_port =3D=3D s2->data.inet6.sin6_port); + default: + return false; } - return false; } =20 /* @@ -314,8 +315,9 @@ virSocketAddrIsPrivate(const virSocketAddr *addr) return ((addr->data.inet6.sin6_addr.s6_addr[0] & 0xFE) =3D=3D 0xFC= || ((addr->data.inet6.sin6_addr.s6_addr[0] & 0xFF) =3D=3D 0xF= E && (addr->data.inet6.sin6_addr.s6_addr[1] & 0xC0) =3D=3D 0xC= 0)); + default: + return false; } - return false; } =20 /* @@ -334,8 +336,9 @@ virSocketAddrIsWildcard(const virSocketAddr *addr) sizeof(addr->data.inet4.sin_addr.s_addr)) =3D=3D 0; case AF_INET6: return IN6_IS_ADDR_UNSPECIFIED(&addr->data.inet6.sin6_addr); + default: + return false; } - return false; } =20 /* @@ -1136,9 +1139,9 @@ virSocketAddrIsNumericLocalhost(const char *addr) sizeof(res.data.inet4.sin_addr.s_addr)) =3D=3D 0; case AF_INET6: return IN6_IS_ADDR_LOOPBACK(&res.data.inet6.sin6_addr); + default: + return false; } - - return false; } =20 =20 diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c index 7f878039ba..14d135b389 100644 --- a/src/util/virstoragefile.c +++ b/src/util/virstoragefile.c @@ -463,6 +463,10 @@ qcow2GetBackingStoreFormat(int *format, ((const char *)buf)+offset); if (*format <=3D VIR_STORAGE_FILE_NONE) return -1; + break; + + default: + break; } =20 offset +=3D len; @@ -2208,6 +2212,7 @@ virStorageSourceIsLocalStorage(const virStorageSource= *src) case VIR_STORAGE_TYPE_VOLUME: case VIR_STORAGE_TYPE_LAST: case VIR_STORAGE_TYPE_NONE: + default: return false; } =20 @@ -2739,6 +2744,7 @@ virStorageSourceParseBackingColon(virStorageSourcePtr= src, case VIR_STORAGE_NET_PROTOCOL_SHEEPDOG: case VIR_STORAGE_NET_PROTOCOL_LAST: case VIR_STORAGE_NET_PROTOCOL_NONE: + default: virReportError(VIR_ERR_INTERNAL_ERROR, _("backing store parser is not implemented for prot= ocol %s"), protocol); @@ -3491,13 +3497,16 @@ virStorageSourceUpdatePhysicalSize(virStorageSource= Ptr src, /* We shouldn't get VOLUME, but the switch requires all cases */ case VIR_STORAGE_TYPE_VOLUME: case VIR_STORAGE_TYPE_NONE: - case VIR_STORAGE_TYPE_LAST: virReportError(VIR_ERR_INTERNAL_ERROR, _("cannot retrieve physical for path '%s' type '%s'"= ), NULLSTR(src->path), virStorageTypeToString(actual_type)); return -1; - break; + case VIR_STORAGE_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected storage type %d"), actual_type); + return -1; } =20 return 0; @@ -3980,6 +3989,7 @@ virStorageSourceIsRelative(virStorageSourcePtr src) case VIR_STORAGE_TYPE_VOLUME: case VIR_STORAGE_TYPE_NONE: case VIR_STORAGE_TYPE_LAST: + default: return false; } =20 @@ -4065,6 +4075,7 @@ virStorageSourceNetworkDefaultPort(virStorageNetProto= col protocol) =20 case VIR_STORAGE_NET_PROTOCOL_LAST: case VIR_STORAGE_NET_PROTOCOL_NONE: + default: return 0; } =20 --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713545020791.1031794590468; Thu, 15 Feb 2018 08:52:25 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 921D91752D1; Thu, 15 Feb 2018 16:52:23 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 5C58E66FFD; Thu, 15 Feb 2018 16:52:23 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 1B83F18033FD; Thu, 15 Feb 2018 16:52:23 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGi16T025762 for ; Thu, 15 Feb 2018 11:44:01 -0500 Received: by smtp.corp.redhat.com (Postfix) id B6FAD2024CAA; Thu, 15 Feb 2018 16:44:01 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id 437102024CA8; Thu, 15 Feb 2018 16:44:01 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:22 +0000 Message-Id: <20180215164347.11538-18-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 17/42] conf: add default: case to all switch statements X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Thu, 15 Feb 2018 16:52:24 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Even if the compiler has validated that all enum constants have case statements in a switch, it is not safe to omit a default: case statement. When assigning a value to a variable / struct field that is defined with an enum type, nothing prevents an invalid value being assigned. So defensive code must assume existance of invalid values and thus all switches should have a default: case. Signed-off-by: Daniel P. Berrang=C3=A9 --- src/conf/device_conf.c | 4 +- src/conf/domain_addr.c | 10 +- src/conf/domain_audit.c | 4 + src/conf/domain_conf.c | 468 ++++++++++++++++++++++++++++++++---= ---- src/conf/domain_event.c | 1 + src/conf/interface_conf.c | 21 +- src/conf/netdev_bandwidth_conf.h | 4 +- src/conf/network_conf.c | 8 +- src/conf/network_event.c | 1 + src/conf/node_device_conf.c | 27 ++- src/conf/node_device_event.c | 1 + src/conf/nwfilter_conf.c | 1 + src/conf/nwfilter_params.c | 14 ++ src/conf/secret_event.c | 1 + src/conf/storage_event.c | 1 + src/conf/virnodedeviceobj.c | 1 + src/conf/virstorageobj.c | 1 + 17 files changed, 468 insertions(+), 100 deletions(-) diff --git a/src/conf/device_conf.c b/src/conf/device_conf.c index d69f94fadf..6037d290e9 100644 --- a/src/conf/device_conf.c +++ b/src/conf/device_conf.c @@ -83,7 +83,6 @@ virDomainDeviceInfoAddressIsEqual(const virDomainDeviceIn= fo *a, =20 switch ((virDomainDeviceAddressType) a->type) { case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE: - case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_LAST: /* address types below don't have any specific data */ case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_MMIO: case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_S390: @@ -140,6 +139,9 @@ virDomainDeviceInfoAddressIsEqual(const virDomainDevice= Info *a, if (memcmp(&a->addr.dimm, &b->addr.dimm, sizeof(a->addr.dimm))) return false; break; + case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_LAST: + default: + return false; } =20 return true; diff --git a/src/conf/domain_addr.c b/src/conf/domain_addr.c index df19c6be1a..98230fc267 100644 --- a/src/conf/domain_addr.c +++ b/src/conf/domain_addr.c @@ -70,8 +70,10 @@ virDomainPCIControllerModelToConnectType(virDomainContro= llerModelPCI model) =20 case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_DOWNSTREAM_PORT: return VIR_PCI_CONNECT_TYPE_PCIE_SWITCH_DOWNSTREAM_PORT; + + default: + return 0; } - return 0; } =20 =20 @@ -352,6 +354,11 @@ virDomainPCIAddressBusSetModel(virDomainPCIAddressBusP= tr bus, virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("PCI controller model was not set correctly= ")); return -1; + + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected PCI controller model %d"), model); + return -1; } =20 bus->model =3D model; @@ -1753,6 +1760,7 @@ virDomainUSBAddressControllerModelToPorts(virDomainCo= ntrollerDefPtr cont) case VIR_DOMAIN_CONTROLLER_MODEL_USB_DEFAULT: case VIR_DOMAIN_CONTROLLER_MODEL_USB_NONE: case VIR_DOMAIN_CONTROLLER_MODEL_USB_LAST: + default: break; } return 0; diff --git a/src/conf/domain_audit.c b/src/conf/domain_audit.c index 82868bca76..f0a7ad7a48 100644 --- a/src/conf/domain_audit.c +++ b/src/conf/domain_audit.c @@ -191,6 +191,7 @@ virDomainAuditSmartcard(virDomainObjPtr vm, break; =20 case VIR_DOMAIN_SMARTCARD_TYPE_LAST: + default: break; } } @@ -236,6 +237,7 @@ virDomainAuditRNG(virDomainObjPtr vm, break; =20 case VIR_DOMAIN_RNG_BACKEND_LAST: + default: break; } } @@ -251,6 +253,7 @@ virDomainAuditRNG(virDomainObjPtr vm, break; =20 case VIR_DOMAIN_RNG_BACKEND_LAST: + default: break; } } @@ -1017,6 +1020,7 @@ virDomainAuditInput(virDomainObjPtr vm, break; =20 case VIR_DOMAIN_INPUT_TYPE_LAST: + default: break; } =20 diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 538dfc84bd..9cc6e87ccb 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -1038,7 +1038,10 @@ virDomainKeyWrapCipherDefParseXML(virDomainKeyWrapDe= fPtr keywrap, break; =20 case VIR_DOMAIN_KEY_WRAP_CIPHER_NAME_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected key cipher %d"), name_type); + goto cleanup; } =20 ret =3D 0; @@ -1411,6 +1414,7 @@ void virDomainGraphicsDefFree(virDomainGraphicsDefPtr= def) break; =20 case VIR_DOMAIN_GRAPHICS_TYPE_LAST: + default: break; } =20 @@ -1429,12 +1433,13 @@ const char *virDomainInputDefGetPath(virDomainInput= DefPtr input) case VIR_DOMAIN_INPUT_TYPE_KBD: case VIR_DOMAIN_INPUT_TYPE_LAST: return NULL; - break; =20 case VIR_DOMAIN_INPUT_TYPE_PASSTHROUGH: return input->source.evdev; + + default: + return NULL; } - return NULL; } =20 void virDomainInputDefFree(virDomainInputDefPtr def) @@ -1919,6 +1924,7 @@ virDomainControllerDefNew(virDomainControllerType typ= e) case VIR_DOMAIN_CONTROLLER_TYPE_SATA: case VIR_DOMAIN_CONTROLLER_TYPE_CCID: case VIR_DOMAIN_CONTROLLER_TYPE_LAST: + default: break; } =20 @@ -2075,6 +2081,7 @@ virDomainNetDefClear(virDomainNetDefPtr def) case VIR_DOMAIN_NET_TYPE_ETHERNET: case VIR_DOMAIN_NET_TYPE_USER: case VIR_DOMAIN_NET_TYPE_LAST: + default: break; } =20 @@ -2137,6 +2144,7 @@ virDomainChrSourceDefGetPath(virDomainChrSourceDefPtr= chr) case VIR_DOMAIN_CHR_TYPE_SPICEVMC: case VIR_DOMAIN_CHR_TYPE_SPICEPORT: case VIR_DOMAIN_CHR_TYPE_LAST: + default: return NULL; } =20 @@ -2179,6 +2187,9 @@ virDomainChrSourceDefClear(virDomainChrSourceDefPtr d= ef) case VIR_DOMAIN_CHR_TYPE_SPICEPORT: VIR_FREE(def->data.spiceport.channel); break; + + default: + break; } =20 VIR_FREE(def->logfile); @@ -2249,6 +2260,11 @@ virDomainChrSourceDefCopy(virDomainChrSourceDefPtr d= est, return -1; =20 break; + + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected chardev type %d"), src->type); + return -1; } =20 dest->type =3D src->type; @@ -2338,6 +2354,9 @@ virDomainChrSourceDefIsEqual(const virDomainChrSource= Def *src, case VIR_DOMAIN_CHR_TYPE_STDIO: case VIR_DOMAIN_CHR_TYPE_LAST: break; + + default: + return false; } =20 return true; @@ -2359,6 +2378,8 @@ void virDomainChrDefFree(virDomainChrDefPtr def) case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_VIRTIO: VIR_FREE(def->target.name); break; + default: + break; } break; =20 @@ -2564,6 +2585,7 @@ void virDomainHostdevDefClear(virDomainHostdevDefPtr = def) virNetDevIPInfoClear(&def->source.caps.u.net.ip); break; case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_LAST: + default: break; } break; @@ -2579,9 +2601,12 @@ void virDomainHostdevDefClear(virDomainHostdevDefPtr= def) case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST: + default: break; } break; + default: + break; } } =20 @@ -2595,6 +2620,7 @@ void virDomainTPMDefFree(virDomainTPMDefPtr def) VIR_FREE(def->data.passthrough.source.data.file.path); break; case VIR_DOMAIN_TPM_TYPE_LAST: + default: break; } =20 @@ -2739,6 +2765,7 @@ void virDomainDeviceDefFree(virDomainDeviceDefPtr def) break; case VIR_DOMAIN_DEVICE_LAST: case VIR_DOMAIN_DEVICE_NONE: + default: break; } =20 @@ -3552,9 +3579,10 @@ int virDomainDeviceAddressIsValid(virDomainDeviceInf= oPtr info, =20 case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_USB: return 1; - } =20 - return 0; + default: + return 0; + } } =20 virDomainDeviceInfoPtr @@ -3608,6 +3636,7 @@ virDomainDeviceGetInfo(virDomainDeviceDefPtr device) case VIR_DOMAIN_DEVICE_IOMMU: case VIR_DOMAIN_DEVICE_LAST: case VIR_DOMAIN_DEVICE_NONE: + default: break; } return NULL; @@ -3832,6 +3861,7 @@ virDomainDeviceInfoIterateInternal(virDomainDefPtr de= f, case VIR_DOMAIN_DEVICE_RNG: case VIR_DOMAIN_DEVICE_MEMORY: case VIR_DOMAIN_DEVICE_IOMMU: + default: break; } #endif @@ -4111,9 +4141,15 @@ virDomainDefAddConsoleCompat(virDomainDefPtr def) =20 case VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_PCI: case VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_USB: - case VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_LAST: /* Nothing to do */ break; + + case VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected chardev target type %d"), + def->serials[0]->targetType); + return -1; } } =20 @@ -4468,8 +4504,14 @@ virDomainHostdevDefPostParse(virDomainHostdevDefPtr = dev, case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST: - case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST: break; + + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected hostdev subsys type %d"), + dev->source.subsys.type); + return -1; } =20 return 0; @@ -4893,6 +4935,7 @@ virDomainVcpuDefPostParse(virDomainDefPtr def) =20 case VIR_TRISTATE_BOOL_YES: case VIR_TRISTATE_BOOL_LAST: + default: break; } } @@ -5171,12 +5214,12 @@ virDomainDiskAddressDiskBusCompatibility(virDomainD= iskBus bus, case VIR_DOMAIN_DISK_BUS_SD: case VIR_DOMAIN_DISK_BUS_LAST: return true; + default: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("unexpected bus type '%d'"), + bus); + return false; } - - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("unexpected bus type '%d'"), - bus); - return true; } =20 =20 @@ -5336,6 +5379,11 @@ virDomainChrSourceDefValidate(const virDomainChrSour= ceDef *def, return -1; } break; + + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected chardev type %d"), def->type); + return -1; } =20 return 0; @@ -5480,8 +5528,13 @@ virDomainHostdevDefValidate(const virDomainHostdevDe= f *hostdev) } break; case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV: - case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST: break; + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected hostdev subsys type %d"), + hostdev->source.subsys.type); + return -1; } } return 0; @@ -5547,8 +5600,12 @@ virDomainDeviceDefValidateInternal(const virDomainDe= viceDef *dev, case VIR_DOMAIN_DEVICE_MEMORY: case VIR_DOMAIN_DEVICE_IOMMU: case VIR_DOMAIN_DEVICE_NONE: - case VIR_DOMAIN_DEVICE_LAST: break; + case VIR_DOMAIN_DEVICE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected device type %d"), dev->type); + return -1; } =20 return 0; @@ -5854,16 +5911,24 @@ virDomainDefLifecycleActionAllowed(virDomainLifecyc= le type, case VIR_DOMAIN_LIFECYCLE_ACTION_RESTART: case VIR_DOMAIN_LIFECYCLE_ACTION_RESTART_RENAME: case VIR_DOMAIN_LIFECYCLE_ACTION_PRESERVE: - case VIR_DOMAIN_LIFECYCLE_ACTION_LAST: return true; case VIR_DOMAIN_LIFECYCLE_ACTION_COREDUMP_DESTROY: case VIR_DOMAIN_LIFECYCLE_ACTION_COREDUMP_RESTART: break; + case VIR_DOMAIN_LIFECYCLE_ACTION_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected lifecycle action %d"), action); + return false; } break; case VIR_DOMAIN_LIFECYCLE_CRASH: - case VIR_DOMAIN_LIFECYCLE_LAST: return true; + case VIR_DOMAIN_LIFECYCLE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected lifecycle type %d"), type); + return false; } =20 virReportError(VIR_ERR_CONFIG_UNSUPPORTED, @@ -6169,6 +6234,7 @@ virDomainDeviceInfoFormat(virBufferPtr buf, case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_S390: case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE: case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_LAST: + default: break; } =20 @@ -6674,8 +6740,12 @@ virDomainDeviceAddressParseXML(xmlNodePtr address, break; =20 case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE: - case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_LAST: break; + case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected device type %d"), info->type); + goto cleanup; } =20 ret =3D 0; @@ -7351,12 +7421,16 @@ virDomainHostdevSubsysSCSIVHostDefParseXML(xmlNodeP= tr sourcenode, wwpn =3D NULL; break; case VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_HOST_PROTOCOL_TYPE_NONE: - case VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_HOST_PROTOCOL_TYPE_LAST: virReportError(VIR_ERR_XML_ERROR, _("Invalid hostdev protocol '%s'"), virDomainHostdevSubsysSCSIHostProtocolTypeToString(= hostsrc->protocol)); goto cleanup; - break; + case VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_HOST_PROTOCOL_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected hostdev SCSI protocol %d"), + hostsrc->protocol); + goto cleanup; } =20 ret =3D 0; @@ -7560,10 +7634,11 @@ virDomainHostdevDefParseXMLSubsys(xmlNodePtr node, goto error; break; =20 + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST: default: - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("address type=3D'%s' not supported in hostdev int= erfaces"), - virDomainHostdevSubsysTypeToString(def->source.subs= ys.type)); + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected hostdev susbys type %d"), + def->source.subsys.type); goto error; } =20 @@ -7827,10 +7902,11 @@ virDomainHostdevDefParseXMLCaps(xmlNodePtr node ATT= RIBUTE_UNUSED, ctxt, &def->source.caps.u.net.ip) <= 0) goto error; break; + case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_LAST: default: - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("address type=3D'%s' not supported in hostdev int= erfaces"), - virDomainHostdevCapsTypeToString(def->source.caps.t= ype)); + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected hostdev caps type %d"), + def->source.caps.type); goto error; } ret =3D 0; @@ -7960,9 +8036,19 @@ virDomainDiskDefAssignAddress(virDomainXMLOptionPtr = xmlopt, def->info.addr.drive.unit =3D idx % 2; break; =20 - default: + case VIR_DOMAIN_DISK_BUS_VIRTIO: + case VIR_DOMAIN_DISK_BUS_XEN: + case VIR_DOMAIN_DISK_BUS_USB: + case VIR_DOMAIN_DISK_BUS_UML: + case VIR_DOMAIN_DISK_BUS_SD: /* Other disk bus's aren't controller based */ break; + case VIR_DOMAIN_DISK_BUS_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected domain disk bus %d"), + def->bus); + return -1; } =20 return 0; @@ -8644,9 +8730,9 @@ virDomainDiskSourceParse(xmlNodePtr node, break; case VIR_STORAGE_TYPE_NONE: case VIR_STORAGE_TYPE_LAST: + default: virReportError(VIR_ERR_INTERNAL_ERROR, - _("unexpected disk type %s"), - virStorageTypeToString(src->type)); + _("Unexpected storage type %d"), src->type); goto cleanup; } =20 @@ -10159,6 +10245,8 @@ virDomainControllerDefParseXML(virDomainXMLOptionPt= r xmlopt, case VIR_DOMAIN_CONTROLLER_MODEL_USB_ICH9_UHCI3: masterPort =3D 4; break; + default: + break; } if (masterPort !=3D -1 && def->info.mastertype =3D=3D VIR_DOMAIN_CONTROLLER_MASTER_NONE)= { @@ -10196,10 +10284,14 @@ virDomainControllerDefParseXML(virDomainXMLOption= Ptr xmlopt, case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_DOWNSTREAM_PORT: case VIR_DOMAIN_CONTROLLER_MODEL_PCI_EXPANDER_BUS: case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_EXPANDER_BUS: - case VIR_DOMAIN_CONTROLLER_MODEL_PCI_DEFAULT: - case VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST: /* Other controller models don't require extra checks */ break; + case VIR_DOMAIN_CONTROLLER_MODEL_PCI_DEFAULT: + case VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected controller model %d"), def->model= ); + goto error; } if (modelName && (def->opts.pciopts.modelName @@ -11298,8 +11390,12 @@ virDomainNetDefParseXML(virDomainXMLOptionPtr xmlo= pt, =20 case VIR_DOMAIN_NET_TYPE_ETHERNET: case VIR_DOMAIN_NET_TYPE_USER: - case VIR_DOMAIN_NET_TYPE_LAST: break; + case VIR_DOMAIN_NET_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected net type %d"), def->type); + goto error; } =20 if (virDomainNetIPInfoParseXML(_("guest interface"), @@ -11670,9 +11766,13 @@ virDomainChrDefaultTargetType(int devtype) return VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_NONE; =20 case VIR_DOMAIN_CHR_DEVICE_TYPE_PARALLEL: - case VIR_DOMAIN_CHR_DEVICE_TYPE_LAST: /* No target type yet*/ break; + case VIR_DOMAIN_CHR_DEVICE_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected chardev device type %d"), devtype); + return -1; } =20 return 0; @@ -11701,10 +11801,14 @@ virDomainChrTargetTypeFromString(int devtype, break; =20 case VIR_DOMAIN_CHR_DEVICE_TYPE_PARALLEL: - case VIR_DOMAIN_CHR_DEVICE_TYPE_LAST: /* No target type yet*/ ret =3D 0; break; + case VIR_DOMAIN_CHR_DEVICE_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected chardev device type %d"), devtype); + break; } =20 return ret; @@ -11727,10 +11831,14 @@ virDomainChrTargetModelFromString(int devtype, case VIR_DOMAIN_CHR_DEVICE_TYPE_CHANNEL: case VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE: case VIR_DOMAIN_CHR_DEVICE_TYPE_PARALLEL: - case VIR_DOMAIN_CHR_DEVICE_TYPE_LAST: /* Target model not supported yet */ ret =3D 0; break; + case VIR_DOMAIN_CHR_DEVICE_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected chardev device type %d"), devtype); + break; } =20 return ret; @@ -11777,9 +11885,9 @@ virDomainChrDefParseTargetXML(virDomainChrDefPtr de= f, goto error; } =20 - switch (def->deviceType) { + switch ((virDomainChrDeviceType)def->deviceType) { case VIR_DOMAIN_CHR_DEVICE_TYPE_CHANNEL: - switch (def->targetType) { + switch ((virDomainChrChannelTargetType)def->targetType) { case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_GUESTFWD: addrStr =3D virXMLPropString(cur, "address"); portStr =3D virXMLPropString(cur, "port"); @@ -11840,10 +11948,22 @@ virDomainChrDefParseTargetXML(virDomainChrDefPtr = def, def->state =3D tmp; } break; + + case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_NONE: + break; + + case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected channel target type %d"), + def->targetType); + goto error; } break; =20 - default: + case VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE: + case VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL: + case VIR_DOMAIN_CHR_DEVICE_TYPE_PARALLEL: portStr =3D virXMLPropString(cur, "port"); if (portStr =3D=3D NULL) { /* Set to negative value to indicate we should set it later */ @@ -11859,6 +11979,13 @@ virDomainChrDefParseTargetXML(virDomainChrDefPtr d= ef, } def->target.port =3D port; break; + + case VIR_DOMAIN_CHR_DEVICE_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected chardev device type %d"), + def->deviceType); + goto error; } =20 =20 @@ -12153,12 +12280,17 @@ virDomainChrSourceDefParseXML(virDomainChrSourceD= efPtr def, def->data.nmdm.slave =3D virXMLPropString(cur, "slave"); break; =20 - case VIR_DOMAIN_CHR_TYPE_LAST: case VIR_DOMAIN_CHR_TYPE_NULL: case VIR_DOMAIN_CHR_TYPE_VC: case VIR_DOMAIN_CHR_TYPE_STDIO: case VIR_DOMAIN_CHR_TYPE_SPICEVMC: break; + + case VIR_DOMAIN_CHR_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected chardev type %d"), def->type); + goto error; } =20 /* Check for an optional seclabel override in . */ @@ -12594,6 +12726,9 @@ virDomainTPMDefParseXML(virDomainXMLOptionPtr xmlop= t, path =3D NULL; break; case VIR_DOMAIN_TPM_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected TPM type %d"), def->type); goto error; } =20 @@ -13117,8 +13252,13 @@ virDomainGraphicsListenDefParseXML(virDomainGraphi= csListenDefPtr def, break; case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_ADDRESS: case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NETWORK: - case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_LAST: break; + case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected graphics listen type %d"), + graphics->type); + goto error; } =20 if (def->type =3D=3D VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_ADDRESS) { @@ -13859,7 +13999,11 @@ virDomainGraphicsDefParseXML(xmlNodePtr node, goto error; break; case VIR_DOMAIN_GRAPHICS_TYPE_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected graphics type %d"), + def->type); + goto error; } =20 cleanup: @@ -14119,7 +14263,11 @@ virDomainRNGDefParseXML(virDomainXMLOptionPtr xmlo= pt, break; =20 case VIR_DOMAIN_RNG_BACKEND_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected RNG backend %d"), + def->backend); + goto error; } =20 if (virDomainDeviceInfoParseXML(xmlopt, node, NULL, &def->info, flags)= < 0) @@ -15004,8 +15152,13 @@ virDomainHostdevDefParseXML(virDomainXMLOptionPtr = xmlopt, case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV: - case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST: break; + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected hostdev subsystem type %d"), + def->source.subsys.type); + goto error; } } =20 @@ -15421,8 +15574,13 @@ virDomainMemorySourceDefParseXML(xmlNodePtr node, break; =20 case VIR_DOMAIN_MEMORY_MODEL_NONE: - case VIR_DOMAIN_MEMORY_MODEL_LAST: break; + case VIR_DOMAIN_MEMORY_MODEL_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected memory model %d"), + def->model); + goto cleanup; } =20 ret =3D 0; @@ -15788,7 +15946,10 @@ virDomainDeviceDefParse(const char *xmlStr, break; case VIR_DOMAIN_DEVICE_NONE: case VIR_DOMAIN_DEVICE_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected device type %d"), dev->type); + goto error; } =20 /* callback to fill driver specific device aspects */ @@ -16006,9 +16167,9 @@ virDomainHostdevMatchSubsys(virDomainHostdevDefPtr = a, case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV: return virDomainHostdevMatchSubsysMediatedDev(a, b); case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST: + default: return 0; } - return 0; } =20 =20 @@ -16045,15 +16206,17 @@ virDomainHostdevMatchCaps(virDomainHostdevDefPtr = a, if (a->source.caps.type !=3D b->source.caps.type) return 0; =20 - switch (a->source.caps.type) { + switch ((virDomainHostdevCapsType)a->source.caps.type) { case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_STORAGE: return virDomainHostdevMatchCapsStorage(a, b); case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_MISC: return virDomainHostdevMatchCapsMisc(a, b); case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_NET: return virDomainHostdevMatchCapsNet(a, b); + case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_LAST: + default: + return 0; } - return 0; } =20 =20 @@ -16064,13 +16227,15 @@ virDomainHostdevMatch(virDomainHostdevDefPtr a, if (a->mode !=3D b->mode) return 0; =20 - switch (a->mode) { + switch ((virDomainHostdevMode)a->mode) { case VIR_DOMAIN_HOSTDEV_MODE_SUBSYS: return virDomainHostdevMatchSubsys(a, b); case VIR_DOMAIN_HOSTDEV_MODE_CAPABILITIES: return virDomainHostdevMatchCaps(a, b); + case VIR_DOMAIN_HOSTDEV_MODE_LAST: + default: + return 0; } - return 0; } =20 /* Find an entry in hostdevs that matches the source spec in @@ -16695,11 +16860,14 @@ virDomainChrEquals(virDomainChrDefPtr src, break; =20 case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_NONE: + return true; case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_LAST: - /* shouldn't happen */ - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected channel target type %d"), + src->targetType); + return false; } - break; =20 case VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL: if (src->targetType !=3D tgt->targetType) @@ -16710,12 +16878,13 @@ virDomainChrEquals(virDomainChrDefPtr src, case VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE: case VIR_DOMAIN_CHR_DEVICE_TYPE_PARALLEL: return src->target.port =3D=3D tgt->target.port; - break; + case VIR_DOMAIN_CHR_DEVICE_TYPE_LAST: - /* shouldn't happen */ - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected chardev device type %d"), src->device= Type); + return false; } - return false; } =20 virDomainChrDefPtr @@ -16768,12 +16937,11 @@ virDomainChrGetDomainPtrsInternal(virDomainDefPtr= vmdef, return 0; =20 case VIR_DOMAIN_CHR_DEVICE_TYPE_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected chardev type %d"), type); + return -1; } - - virReportError(VIR_ERR_INTERNAL_ERROR, - _("Unknown char device type: %d"), type); - return -1; } =20 =20 @@ -16882,7 +17050,11 @@ virDomainRNGFind(virDomainDefPtr def, break; =20 case VIR_DOMAIN_RNG_BACKEND_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected RNG backend %d"), + rng->backend); + return -1; } =20 if (rng->info.type !=3D VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE && @@ -16958,8 +17130,12 @@ virDomainMemoryFindByDefInternal(virDomainDefPtr d= ef, break; =20 case VIR_DOMAIN_MEMORY_MODEL_NONE: - case VIR_DOMAIN_MEMORY_MODEL_LAST: break; + case VIR_DOMAIN_MEMORY_MODEL_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected memory model %d"), mem->model); + return -1; } =20 break; @@ -19284,6 +19460,7 @@ virDomainDefParseXML(xmlDocPtr xml, =20 /* coverity[dead_error_begin] */ case VIR_DOMAIN_FEATURE_LAST: + default: break; } } @@ -19384,6 +19561,7 @@ virDomainDefParseXML(xmlDocPtr xml, =20 /* coverity[dead_error_begin] */ case VIR_DOMAIN_HYPERV_LAST: + default: break; } } @@ -19430,6 +19608,7 @@ virDomainDefParseXML(xmlDocPtr xml, =20 /* coverity[dead_error_begin] */ case VIR_DOMAIN_KVM_LAST: + default: break; } } @@ -19512,7 +19691,7 @@ virDomainDefParseXML(xmlDocPtr xml, } VIR_FREE(tmp); =20 - switch (def->clock.offset) { + switch ((virDomainClockOffsetType)def->clock.offset) { case VIR_DOMAIN_CLOCK_OFFSET_LOCALTIME: case VIR_DOMAIN_CLOCK_OFFSET_UTC: tmp =3D virXPathString("string(./clock/@adjustment)", ctxt); @@ -19534,6 +19713,8 @@ virDomainDefParseXML(xmlDocPtr xml, case VIR_DOMAIN_CLOCK_OFFSET_UTC: def->clock.data.variable.basis =3D VIR_DOMAIN_CLOCK_BA= SIS_UTC; break; + default: + break; } def->clock.offset =3D VIR_DOMAIN_CLOCK_OFFSET_VARIABLE; } @@ -19571,6 +19752,11 @@ virDomainDefParseXML(xmlDocPtr xml, goto error; } break; + + case VIR_DOMAIN_CLOCK_OFFSET_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected clock offset %d"), def->clock.offset); } =20 if ((n =3D virXPathNodeSet("./clock/timer", ctxt, &nodes)) < 0) @@ -20664,8 +20850,12 @@ virDomainDeviceInfoCheckABIStability(virDomainDevi= ceInfoPtr src, case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW: case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_MMIO: case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE: - case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_LAST: break; + case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected device address type %d"), src->type); + return false; } =20 return true; @@ -21104,7 +21294,7 @@ virDomainChannelDefCheckABIStability(virDomainChrDe= fPtr src, return false; } =20 - switch (src->targetType) { + switch ((virDomainChrChannelTargetType)src->targetType) { =20 case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_XEN: case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_VIRTIO: @@ -21137,6 +21327,15 @@ virDomainChannelDefCheckABIStability(virDomainChrD= efPtr src, return false; } break; + + case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_NONE: + break; + + case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected channel target type %d"), src->target= Type); + return false; } =20 if (!virDomainDeviceInfoCheckABIStability(&src->info, &dst->info)) @@ -21283,7 +21482,10 @@ virDomainRedirdevDefCheckABIStability(virDomainRed= irdevDefPtr src, } break; case VIR_DOMAIN_REDIRDEV_BUS_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected redirdev bus type %d"), src->bus); + return false; } =20 if (!virDomainDeviceInfoCheckABIStability(&src->info, &dst->info)) @@ -21433,6 +21635,7 @@ virDomainDefFeaturesCheckABIStability(virDomainDefP= tr src, =20 /* coverity[dead_error_begin] */ case VIR_DOMAIN_HYPERV_LAST: + default: break; } } @@ -21457,6 +21660,7 @@ virDomainDefFeaturesCheckABIStability(virDomainDefP= tr src, =20 /* coverity[dead_error_begin] */ case VIR_DOMAIN_KVM_LAST: + default: break; } } @@ -22188,6 +22392,7 @@ virDomainDefCheckABIStabilityFlags(virDomainDefPtr = src, case VIR_DOMAIN_DEVICE_SHMEM: case VIR_DOMAIN_DEVICE_MEMORY: case VIR_DOMAIN_DEVICE_IOMMU: + default: break; } #endif @@ -22819,6 +23024,7 @@ virDomainDiskSourceFormatInternal(virBufferPtr buf, =20 case VIR_STORAGE_TYPE_NONE: case VIR_STORAGE_TYPE_LAST: + default: virReportError(VIR_ERR_INTERNAL_ERROR, _("unexpected disk type %d"), src->type); goto error; @@ -23438,7 +23644,7 @@ virDomainFSDefFormat(virBufferPtr buf, virBufferAddLit(buf, "/>\n"); } =20 - switch (def->type) { + switch ((virDomainFSType)def->type) { case VIR_DOMAIN_FS_TYPE_MOUNT: case VIR_DOMAIN_FS_TYPE_BIND: virBufferEscapeString(buf, "\n", @@ -23471,6 +23677,12 @@ virDomainFSDefFormat(virBufferPtr buf, virBufferEscapeString(buf, " volume=3D'%s'", def->src->srcpool->vo= lume); virBufferAddLit(buf, "/>\n"); break; + + case VIR_DOMAIN_FS_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected filesystem type %d"), def->type); + return -1; } =20 virBufferEscapeString(buf, "\n", @@ -24138,8 +24350,12 @@ virDomainNetDefFormat(virBufferPtr buf, break; =20 case VIR_DOMAIN_NET_TYPE_USER: - case VIR_DOMAIN_NET_TYPE_LAST: break; + case VIR_DOMAIN_NET_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected net type %d"), def->type); + return -1; } =20 /* if sourceLines =3D=3D 0 - no info at all so far @@ -24323,7 +24539,6 @@ virDomainChrSourceDefFormat(virBufferPtr buf, case VIR_DOMAIN_CHR_TYPE_VC: case VIR_DOMAIN_CHR_TYPE_STDIO: case VIR_DOMAIN_CHR_TYPE_SPICEVMC: - case VIR_DOMAIN_CHR_TYPE_LAST: /* nada */ break; =20 @@ -24416,6 +24631,11 @@ virDomainChrSourceDefFormat(virBufferPtr buf, def->data.spiceport.channel); break; =20 + case VIR_DOMAIN_CHR_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected chardev type %d"), def->type); + goto error; } =20 if (def->logfile) { @@ -24484,6 +24704,12 @@ virDomainChrTargetDefFormat(virBufferPtr buf, virDomainChrDeviceStateTypeToString(def-= >state)); } break; + + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected channel target type %d"), + def->targetType); + return -1; } =20 virBufferAddLit(buf, "/>\n"); @@ -24543,6 +24769,7 @@ virDomainChrTargetDefFormat(virBufferPtr buf, break; =20 case VIR_DOMAIN_CHR_DEVICE_TYPE_LAST: + default: virReportError(VIR_ERR_INTERNAL_ERROR, _("unexpected char device type %d"), def->deviceType); @@ -24695,6 +24922,9 @@ virDomainTPMDefFormat(virBufferPtr buf, def->data.passthrough.source.data.file.path); break; case VIR_DOMAIN_TPM_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected TPM type %d"), def->type); break; } =20 @@ -24963,9 +25193,14 @@ virDomainRNGDefFormat(virBufferPtr buf, return -1; virBufferAdjustIndent(buf, -2); virBufferAddLit(buf, "\n"); + break; =20 case VIR_DOMAIN_RNG_BACKEND_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected RNG backend type %d"), def->backend); + virBufferFreeAndReset(&driverBuf); + return -1; } =20 virDomainVirtioOptionsFormat(&driverBuf, def->virtio); @@ -24999,6 +25234,7 @@ virDomainRNGDefFree(virDomainRNGDefPtr def) virDomainChrSourceDefFree(def->source.chardev); break; case VIR_DOMAIN_RNG_BACKEND_LAST: + default: break; } =20 @@ -25040,8 +25276,12 @@ virDomainMemorySourceDefFormat(virBufferPtr buf, break; =20 case VIR_DOMAIN_MEMORY_MODEL_NONE: - case VIR_DOMAIN_MEMORY_MODEL_LAST: break; + case VIR_DOMAIN_MEMORY_MODEL_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected memory model %d"), def->model); + goto cleanup; } =20 virBufferAdjustIndent(buf, -2); @@ -25494,8 +25734,12 @@ virDomainGraphicsDefFormat(virBufferPtr buf, virDomainGraphicsListenDefFormatAddr(buf, glisten, flags); break; case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NONE: - case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_LAST: break; + case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected graphics listen type %d"), gliste= n->type); + return -1; } =20 if (def->data.vnc.keymap) @@ -25596,7 +25840,10 @@ virDomainGraphicsDefFormat(virBufferPtr buf, break; =20 case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected graphics listen type %d"), gliste= n->type); + return -1; } =20 if (def->data.spice.keymap) @@ -25611,7 +25858,11 @@ virDomainGraphicsDefFormat(virBufferPtr buf, break; =20 case VIR_DOMAIN_GRAPHICS_TYPE_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected graphics type %d"), + def->type); + return -1; } =20 for (i =3D 0; i < def->nListens; i++) { @@ -25777,7 +26028,7 @@ virDomainHostdevDefFormat(virBufferPtr buf, virBufferAddLit(buf, ">\n"); virBufferAdjustIndent(buf, 2); =20 - switch (def->mode) { + switch ((virDomainHostdevMode)def->mode) { case VIR_DOMAIN_HOSTDEV_MODE_SUBSYS: if (virDomainHostdevDefFormatSubsys(buf, def, flags, false) < 0) return -1; @@ -25786,6 +26037,11 @@ virDomainHostdevDefFormat(virBufferPtr buf, if (virDomainHostdevDefFormatCaps(buf, def) < 0) return -1; break; + case VIR_DOMAIN_HOSTDEV_MODE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected hostdev mode %d"), def->mode); + return -1; } =20 if (def->readonly) @@ -26074,6 +26330,7 @@ virDomainSchedulerFormat(virBufferPtr buf, =20 case VIR_PROC_POLICY_NONE: case VIR_PROC_POLICY_LAST: + default: break; } =20 @@ -26775,6 +27032,7 @@ virDomainDefFormatInternal(virDomainDefPtr def, =20 case VIR_TRISTATE_SWITCH_LAST: case VIR_TRISTATE_SWITCH_OFF: + default: virReportError(VIR_ERR_INTERNAL_ERROR, _("Unexpected state of feature '%s'"), na= me); =20 @@ -26790,6 +27048,7 @@ virDomainDefFormatInternal(virDomainDefPtr def, case VIR_DOMAIN_FEATURE_VMPORT: case VIR_DOMAIN_FEATURE_SMM: switch ((virTristateSwitch) def->features[i]) { + default: case VIR_TRISTATE_SWITCH_LAST: case VIR_TRISTATE_SWITCH_ABSENT: break; @@ -26857,6 +27116,7 @@ virDomainDefFormatInternal(virDomainDefPtr def, =20 /* coverity[dead_error_begin] */ case VIR_DOMAIN_HYPERV_LAST: + default: break; } =20 @@ -26884,6 +27144,7 @@ virDomainDefFormatInternal(virDomainDefPtr def, =20 /* coverity[dead_error_begin] */ case VIR_DOMAIN_KVM_LAST: + default: break; } } @@ -26937,6 +27198,7 @@ virDomainDefFormatInternal(virDomainDefPtr def, =20 /* coverity[dead_error_begin] */ case VIR_DOMAIN_FEATURE_LAST: + default: break; } } @@ -26950,7 +27212,7 @@ virDomainDefFormatInternal(virDomainDefPtr def, =20 virBufferAsprintf(buf, "clock.offset)); - switch (def->clock.offset) { + switch ((virDomainClockOffsetType)def->clock.offset) { case VIR_DOMAIN_CLOCK_OFFSET_LOCALTIME: case VIR_DOMAIN_CLOCK_OFFSET_UTC: if (def->clock.data.utc_reset) @@ -26969,6 +27231,11 @@ virDomainDefFormatInternal(virDomainDefPtr def, case VIR_DOMAIN_CLOCK_OFFSET_TIMEZONE: virBufferEscapeString(buf, " timezone=3D'%s'", def->clock.data.tim= ezone); break; + case VIR_DOMAIN_CLOCK_OFFSET_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected clock offset type %d"), def->clock.of= fset); + goto error; } if (def->clock.ntimers =3D=3D 0) { virBufferAddLit(buf, "/>\n"); @@ -27871,10 +28138,10 @@ virDomainStateReasonToString(virDomainState state= , int reason) case VIR_DOMAIN_PMSUSPENDED: return virDomainPMSuspendedReasonTypeToString(reason); case VIR_DOMAIN_LAST: - break; + default: + VIR_WARN("Unexpected domain state: %d", state); + return NULL; } - VIR_WARN("Unexpected domain state: %d", state); - return NULL; } =20 =20 @@ -27899,10 +28166,10 @@ virDomainStateReasonFromString(virDomainState sta= te, const char *reason) case VIR_DOMAIN_PMSUSPENDED: return virDomainPMSuspendedReasonTypeFromString(reason); case VIR_DOMAIN_LAST: - break; + default: + VIR_WARN("Unexpected domain state: %d", state); + return -1; } - VIR_WARN("Unexpected domain state: %d", state); - return -1; } =20 =20 @@ -28270,10 +28537,15 @@ virDomainDeviceDefCopy(virDomainDeviceDefPtr src, case VIR_DOMAIN_DEVICE_MEMBALLOON: case VIR_DOMAIN_DEVICE_NVRAM: case VIR_DOMAIN_DEVICE_IOMMU: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Copying definition of '%s' type " + "is not implemented yet."), + virDomainDeviceTypeToString(src->type)); + goto cleanup; case VIR_DOMAIN_DEVICE_LAST: + default: virReportError(VIR_ERR_INTERNAL_ERROR, - _("Copying definition of '%d' type " - "is not implemented yet."), + _("Unexpected device type %d"), src->type); goto cleanup; } @@ -28417,6 +28689,10 @@ virDomainObjGetMetadata(virDomainObjPtr vm, =20 /* coverity[dead_error_begin] */ case VIR_DOMAIN_METADATA_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected metadata type %d"), + type); break; } =20 @@ -28503,6 +28779,10 @@ virDomainDefSetMetadata(virDomainDefPtr def, =20 /* coverity[dead_error_begin] */ case VIR_DOMAIN_METADATA_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected metadata type %d"), + type); break; } =20 @@ -28849,6 +29129,7 @@ virDomainNetTypeSharesHostView(const virDomainNetDe= f *net) case VIR_DOMAIN_NET_TYPE_HOSTDEV: case VIR_DOMAIN_NET_TYPE_UDP: case VIR_DOMAIN_NET_TYPE_LAST: + default: break; } return false; @@ -29141,6 +29422,11 @@ virDomainDiskTranslateSourcePool(virConnectPtr con= n, virStorageVolTypeToString(info.type), virStoragePoolTypeToString(pooldef->type)); goto cleanup; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected storage vol type %d"), + info.type); + goto cleanup; } =20 break; @@ -29185,6 +29471,11 @@ virDomainDiskTranslateSourcePool(virConnectPtr con= n, if (virDomainDiskAddISCSIPoolSourceHost(def, pooldef) < 0) goto cleanup; break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected storage pool mode %d"), + def->src->srcpool->mode); + goto cleanup; } break; =20 @@ -29192,12 +29483,17 @@ virDomainDiskTranslateSourcePool(virConnectPtr co= nn, case VIR_STORAGE_POOL_RBD: case VIR_STORAGE_POOL_SHEEPDOG: case VIR_STORAGE_POOL_GLUSTER: - case VIR_STORAGE_POOL_LAST: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("using '%s' pools for backing 'volume' disks " "isn't yet supported"), virStoragePoolTypeToString(pooldef->type)); goto cleanup; + case VIR_STORAGE_POOL_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected storage pool type %d"), + pooldef->type); + goto cleanup; } =20 ret =3D 0; diff --git a/src/conf/domain_event.c b/src/conf/domain_event.c index 7baccd5b57..a6202ec1b1 100644 --- a/src/conf/domain_event.c +++ b/src/conf/domain_event.c @@ -2042,6 +2042,7 @@ virDomainEventDispatchDefaultFunc(virConnectPtr conn, goto cleanup; } case VIR_DOMAIN_EVENT_ID_LAST: + default: break; } =20 diff --git a/src/conf/interface_conf.c b/src/conf/interface_conf.c index 0a4b28f489..89f77a719e 100644 --- a/src/conf/interface_conf.c +++ b/src/conf/interface_conf.c @@ -83,7 +83,7 @@ virInterfaceDefFree(virInterfaceDefPtr def) VIR_FREE(def->name); VIR_FREE(def->mac); =20 - switch (def->type) { + switch ((virInterfaceType)def->type) { case VIR_INTERFACE_TYPE_BRIDGE: VIR_FREE(def->data.bridge.delay); for (i =3D 0; i < def->data.bridge.nbItf; i++) { @@ -106,6 +106,10 @@ virInterfaceDefFree(virInterfaceDefPtr def) VIR_FREE(def->data.vlan.tag); VIR_FREE(def->data.vlan.dev_name); break; + case VIR_INTERFACE_TYPE_ETHERNET: + case VIR_INTERFACE_TYPE_LAST: + default: + break; } =20 /* free all protos */ @@ -760,7 +764,7 @@ virInterfaceDefParseXML(xmlXPathContextPtr ctxt, goto error; } =20 - switch (type) { + switch ((virInterfaceType)type) { case VIR_INTERFACE_TYPE_ETHERNET: if ((tmp =3D virXPathString("string(./mac/@address)", ctxt))) def->mac =3D tmp; @@ -804,7 +808,11 @@ virInterfaceDefParseXML(xmlXPathContextPtr ctxt, goto error; break; } - + case VIR_INTERFACE_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected interface type %d"), type); + goto error; } =20 ctxt->node =3D cur; @@ -1115,7 +1123,7 @@ virInterfaceDefDevFormat(virBufferPtr buf, =20 if (def->type !=3D VIR_INTERFACE_TYPE_BRIDGE) virInterfaceLinkFormat(buf, &def->lnk); - switch (def->type) { + switch ((virInterfaceType)def->type) { case VIR_INTERFACE_TYPE_ETHERNET: if (def->mac) virBufferAsprintf(buf, "\n", def->mac= ); @@ -1129,6 +1137,11 @@ virInterfaceDefDevFormat(virBufferPtr buf, case VIR_INTERFACE_TYPE_VLAN: virInterfaceVlanDefFormat(buf, def); break; + case VIR_INTERFACE_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected interface type %d"), def->type); + goto cleanup; } =20 virBufferAdjustIndent(buf, -2); diff --git a/src/conf/netdev_bandwidth_conf.h b/src/conf/netdev_bandwidth_c= onf.h index 30f988953c..3d2ebb62b4 100644 --- a/src/conf/netdev_bandwidth_conf.h +++ b/src/conf/netdev_bandwidth_conf.h @@ -56,9 +56,9 @@ static inline bool virNetDevSupportBandwidth(virDomainNet= Type type) case VIR_DOMAIN_NET_TYPE_INTERNAL: case VIR_DOMAIN_NET_TYPE_HOSTDEV: case VIR_DOMAIN_NET_TYPE_LAST: - break; + default: + return false; } - return false; } =20 #endif /* __VIR_NETDEV_BANDWIDTH_CONF_H__ */ diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index 54109a3d2e..e91df37463 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -1874,7 +1874,7 @@ virNetworkDefParseXML(xmlXPathContextPtr ctxt) /* Validate some items in the main NetworkDef that need to align * with the chosen forward mode. */ - switch (def->forward.type) { + switch ((virNetworkForwardType)def->forward.type) { case VIR_NETWORK_FORWARD_NONE: break; =20 @@ -1955,6 +1955,12 @@ virNetworkDefParseXML(xmlXPathContextPtr ctxt) goto error; } break; + + case VIR_NETWORK_FORWARD_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected forward type %d"), def->forward.type); + goto error; } =20 VIR_FREE(stp); diff --git a/src/conf/network_event.c b/src/conf/network_event.c index e0d1a3d5ca..d005784b52 100644 --- a/src/conf/network_event.c +++ b/src/conf/network_event.c @@ -114,6 +114,7 @@ virNetworkEventDispatchDefaultFunc(virConnectPtr conn, } =20 case VIR_NETWORK_EVENT_ID_LAST: + default: break; } VIR_WARN("Unexpected event ID %d", event->eventID); diff --git a/src/conf/node_device_conf.c b/src/conf/node_device_conf.c index fd8f4e4a94..5dd945a07f 100644 --- a/src/conf/node_device_conf.c +++ b/src/conf/node_device_conf.c @@ -592,8 +592,14 @@ virNodeDeviceDefFormat(const virNodeDeviceDef *def) case VIR_NODE_DEV_CAP_MDEV_TYPES: case VIR_NODE_DEV_CAP_FC_HOST: case VIR_NODE_DEV_CAP_VPORTS: - case VIR_NODE_DEV_CAP_LAST: break; + case VIR_NODE_DEV_CAP_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected node device capability %d"), + caps->data.type); + virBufferFreeAndReset(&buf); + return NULL; } =20 virBufferAdjustIndent(&buf, -2); @@ -1884,12 +1890,16 @@ virNodeDevCapsDefParseXML(xmlXPathContextPtr ctxt, case VIR_NODE_DEV_CAP_FC_HOST: case VIR_NODE_DEV_CAP_VPORTS: case VIR_NODE_DEV_CAP_SCSI_GENERIC: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Invalid capability type '%s' for '%s'"), + virNodeDevCapTypeToString(caps->data.type), def->na= me); + goto error; case VIR_NODE_DEV_CAP_LAST: + default: virReportError(VIR_ERR_INTERNAL_ERROR, - _("unknown capability type '%d' for '%s'"), + _("Unexpected node device capability '%d' for '%s'"= ), caps->data.type, def->name); - ret =3D -1; - break; + goto error; } =20 if (ret < 0) @@ -1967,6 +1977,7 @@ virNodeDeviceDefParseXML(xmlXPathContextPtr ctxt, def->devlinks[m++] =3D (char*)xmlNodeGetContent(node); break; case VIR_NODE_DEV_DEVNODE_LAST: + default: break; } } @@ -2213,6 +2224,7 @@ virNodeDevCapsDefFree(virNodeDevCapsDefPtr caps) case VIR_NODE_DEV_CAP_VPORTS: case VIR_NODE_DEV_CAP_CCW_DEV: case VIR_NODE_DEV_CAP_LAST: + default: /* This case is here to shutup the compiler */ break; } @@ -2464,8 +2476,13 @@ virNodeDeviceUpdateCaps(virNodeDeviceDefPtr def) case VIR_NODE_DEV_CAP_MDEV_TYPES: case VIR_NODE_DEV_CAP_MDEV: case VIR_NODE_DEV_CAP_CCW_DEV: - case VIR_NODE_DEV_CAP_LAST: break; + case VIR_NODE_DEV_CAP_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected node device capability %d"), + cap->data.type); + return -1; } cap =3D cap->next; } diff --git a/src/conf/node_device_event.c b/src/conf/node_device_event.c index 312ef512d1..3b1e059b2c 100644 --- a/src/conf/node_device_event.c +++ b/src/conf/node_device_event.c @@ -146,6 +146,7 @@ virNodeDeviceEventDispatchDefaultFunc(virConnectPtr con= n, } =20 case VIR_NODE_DEVICE_EVENT_ID_LAST: + default: break; } VIR_WARN("Unexpected event ID %d", event->eventID); diff --git a/src/conf/nwfilter_conf.c b/src/conf/nwfilter_conf.c index 9e8c725f9f..56f2800ea7 100644 --- a/src/conf/nwfilter_conf.c +++ b/src/conf/nwfilter_conf.c @@ -2398,6 +2398,7 @@ virNWFilterRuleDefFixup(virNWFilterRuleDefPtr rule) break; =20 case VIR_NWFILTER_RULE_PROTOCOL_LAST: + default: break; } #undef COPY_NEG_SIGN diff --git a/src/conf/nwfilter_params.c b/src/conf/nwfilter_params.c index 3a01049182..586fa539d2 100644 --- a/src/conf/nwfilter_params.c +++ b/src/conf/nwfilter_params.c @@ -60,6 +60,7 @@ virNWFilterVarValueFree(virNWFilterVarValuePtr val) VIR_FREE(val->u.array.values); break; case NWFILTER_VALUE_TYPE_LAST: + default: break; } VIR_FREE(val); @@ -92,6 +93,7 @@ virNWFilterVarValueCopy(const virNWFilterVarValue *val) } break; case NWFILTER_VALUE_TYPE_LAST: + default: break; } =20 @@ -162,6 +164,7 @@ virNWFilterVarValueGetNthValue(const virNWFilterVarValu= e* val, unsigned int idx) res =3D val->u.array.values[idx]; break; case NWFILTER_VALUE_TYPE_LAST: + default: break; } =20 @@ -179,6 +182,7 @@ virNWFilterVarValueGetCardinality(const virNWFilterVarV= alue *val) return val->u.array.nValues; break; case NWFILTER_VALUE_TYPE_LAST: + default: return 0; } return 0; @@ -246,6 +250,7 @@ virNWFilterVarValueAddValue(virNWFilterVarValuePtr val,= char *value) break; =20 case NWFILTER_VALUE_TYPE_LAST: + default: break; } =20 @@ -283,6 +288,7 @@ virNWFilterVarValueDelNthValue(virNWFilterVarValuePtr v= al, unsigned int pos) break; =20 case NWFILTER_VALUE_TYPE_LAST: + default: break; } =20 @@ -305,6 +311,7 @@ virNWFilterVarValueDelValue(virNWFilterVarValuePtr val,= const char *value) break; =20 case NWFILTER_VALUE_TYPE_LAST: + default: break; } =20 @@ -373,6 +380,7 @@ virNWFilterVarCombIterAddVariable(virNWFilterVarCombIte= rEntryPtr cie, minValue =3D 0; break; case VIR_NWFILTER_VAR_ACCESS_LAST: + default: return -1; } =20 @@ -514,6 +522,7 @@ virNWFilterVarCombIterCreate(virNWFilterHashTablePtr ha= sh, res->nIter++; break; case VIR_NWFILTER_VAR_ACCESS_LAST: + default: goto err_exit; } =20 @@ -587,6 +596,7 @@ virNWFilterVarCombIterGetVarValue(virNWFilterVarCombIte= rPtr ci, } break; case VIR_NWFILTER_VAR_ACCESS_LAST: + default: return NULL; } =20 @@ -940,6 +950,7 @@ virNWFilterVarAccessEqual(const virNWFilterVarAccess *a, return a->u.iterId =3D=3D b->u.iterId; break; case VIR_NWFILTER_VAR_ACCESS_LAST: + default: break; } return false; @@ -1025,6 +1036,7 @@ virNWFilterVarAccessParse(const char *varAccess) dest->u.iterId =3D result; break; case VIR_NWFILTER_VAR_ACCESS_LAST: + default: goto err_exit; } =20 @@ -1053,6 +1065,7 @@ virNWFilterVarAccessPrint(virNWFilterVarAccessPtr vap= , virBufferPtr buf) virBufferAsprintf(buf, "[@%u]", vap->u.iterId); break; case VIR_NWFILTER_VAR_ACCESS_LAST: + default: break; } } @@ -1117,6 +1130,7 @@ virNWFilterVarAccessIsAvailable(const virNWFilterVarA= ccess *varAccess, case VIR_NWFILTER_VAR_ACCESS_ITERATOR: break; case VIR_NWFILTER_VAR_ACCESS_LAST: + default: return false; } =20 diff --git a/src/conf/secret_event.c b/src/conf/secret_event.c index c130909282..ce5767a49a 100644 --- a/src/conf/secret_event.c +++ b/src/conf/secret_event.c @@ -147,6 +147,7 @@ virSecretEventDispatchDefaultFunc(virConnectPtr conn, } =20 case VIR_SECRET_EVENT_ID_LAST: + default: break; } VIR_WARN("Unexpected event ID %d", event->eventID); diff --git a/src/conf/storage_event.c b/src/conf/storage_event.c index f9b796878a..2f37adb875 100644 --- a/src/conf/storage_event.c +++ b/src/conf/storage_event.c @@ -147,6 +147,7 @@ virStoragePoolEventDispatchDefaultFunc(virConnectPtr co= nn, } =20 case VIR_STORAGE_POOL_EVENT_ID_LAST: + default: break; } VIR_WARN("Unexpected event ID %d", event->eventID); diff --git a/src/conf/virnodedeviceobj.c b/src/conf/virnodedeviceobj.c index ad0f27ee47..82c84b37fe 100644 --- a/src/conf/virnodedeviceobj.c +++ b/src/conf/virnodedeviceobj.c @@ -680,6 +680,7 @@ virNodeDeviceObjHasCap(const virNodeDeviceObj *obj, case VIR_NODE_DEV_CAP_MDEV: case VIR_NODE_DEV_CAP_CCW_DEV: case VIR_NODE_DEV_CAP_LAST: + default: break; } } diff --git a/src/conf/virstorageobj.c b/src/conf/virstorageobj.c index 799b8c9fa3..e6c5704989 100644 --- a/src/conf/virstorageobj.c +++ b/src/conf/virstorageobj.c @@ -1880,6 +1880,7 @@ virStoragePoolObjSourceFindDuplicateCb(const void *pa= yload, =20 case VIR_STORAGE_POOL_RBD: case VIR_STORAGE_POOL_LAST: + default: break; } =20 --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713698425574.2322961772265; Thu, 15 Feb 2018 08:54:58 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E5FDAC074EE6; Thu, 15 Feb 2018 16:54:56 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A6A486A05E; Thu, 15 Feb 2018 16:54:56 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 6389C1841C6A; Thu, 15 Feb 2018 16:54:56 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGi2nt025773 for ; Thu, 15 Feb 2018 11:44:02 -0500 Received: by smtp.corp.redhat.com (Postfix) id 4E1C82024CAA; Thu, 15 Feb 2018 16:44:02 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id E57162024CA8; Thu, 15 Feb 2018 16:44:01 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:23 +0000 Message-Id: <20180215164347.11538-19-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 18/42] cpu: add default: case to all switch statements X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Thu, 15 Feb 2018 16:54:57 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Even if the compiler has validated that all enum constants have case statements in a switch, it is not safe to omit a default: case statement. When assigning a value to a variable / struct field that is defined with an enum type, nothing prevents an invalid value being assigned. So defensive code must assume existance of invalid values and thus all switches should have a default: case. Signed-off-by: Daniel P. Berrang=C3=A9 --- src/cpu/cpu.c | 6 +++++- src/cpu/cpu_ppc64.c | 16 ++++++++++++---- src/cpu/cpu_x86.c | 13 +++++++++---- 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/src/cpu/cpu.c b/src/cpu/cpu.c index 047e3b1112..6191840634 100644 --- a/src/cpu/cpu.c +++ b/src/cpu/cpu.c @@ -428,11 +428,15 @@ virCPUGetHost(virArch arch, break; =20 case VIR_CPU_TYPE_AUTO: - case VIR_CPU_TYPE_LAST: virReportError(VIR_ERR_INVALID_ARG, _("unsupported CPU type: %s"), virCPUTypeToString(type)); goto error; + case VIR_CPU_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected CPU type %d"), type); + goto error; } =20 if (nodeInfo) { diff --git a/src/cpu/cpu_ppc64.c b/src/cpu/cpu_ppc64.c index 76582d4083..5234bc927f 100644 --- a/src/cpu/cpu_ppc64.c +++ b/src/cpu/cpu_ppc64.c @@ -460,11 +460,13 @@ ppc64MapLoadCallback(cpuMapElement element, case CPU_MAP_ELEMENT_MODEL: return ppc64ModelsLoad(map, ctxt, nodes, n); case CPU_MAP_ELEMENT_FEATURE: + return 0; case CPU_MAP_ELEMENT_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected CPU map element %d"), element); + return -1; } - - return 0; } =20 static struct ppc64_map * @@ -573,7 +575,7 @@ ppc64Compute(virCPUDefPtr host, if (cpu->type =3D=3D VIR_CPU_TYPE_GUEST) { /* Guest CPU information */ virCPUCompareResult tmp; - switch (cpu->mode) { + switch ((virCPUMode)cpu->mode) { case VIR_CPU_MODE_HOST_MODEL: /* host-model only: * we need to take compatibility modes into account */ @@ -595,6 +597,12 @@ ppc64Compute(virCPUDefPtr host, * look up guest CPU information */ guest_model =3D ppc64ModelFromCPU(cpu, map); break; + + case VIR_CPU_MODE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected CPU mode %d"), cpu->mode); + goto cleanup; } } else { /* Other host CPU information */ diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c index b2398c5ad2..1aaf83e109 100644 --- a/src/cpu/cpu_x86.c +++ b/src/cpu/cpu_x86.c @@ -1122,8 +1122,12 @@ x86ModelFromCPU(const virCPUDef *cpu, =20 /* coverity[dead_error_condition] */ case VIR_CPU_FEATURE_OPTIONAL: - case VIR_CPU_FEATURE_LAST: break; + case VIR_CPU_FEATURE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected CPU feature policy %d"), fpol= ); + goto error; } } else if (x86DataAdd(&model->data, &feature->data) < 0) { goto error; @@ -1381,10 +1385,11 @@ x86MapLoadCallback(cpuMapElement element, case CPU_MAP_ELEMENT_MODEL: return x86ModelsLoad(map, ctxt, nodes, n); case CPU_MAP_ELEMENT_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected CPU map element %d"), element); + return -1; } - - return 0; } =20 =20 --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713520992953.0006323459295; Thu, 15 Feb 2018 08:52:00 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id CC0134901B; Thu, 15 Feb 2018 16:51:59 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A305B6313B; Thu, 15 Feb 2018 16:51:59 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 68B2D4A476; Thu, 15 Feb 2018 16:51:59 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGi2a1025786 for ; Thu, 15 Feb 2018 11:44:03 -0500 Received: by smtp.corp.redhat.com (Postfix) id DA0BE2024CAB; Thu, 15 Feb 2018 16:44:02 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id 7C88B2024CA8; Thu, 15 Feb 2018 16:44:02 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:24 +0000 Message-Id: <20180215164347.11538-20-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 19/42] secret: add default: case to all switch statements X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Thu, 15 Feb 2018 16:52:00 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Even if the compiler has validated that all enum constants have case statements in a switch, it is not safe to omit a default: case statement. When assigning a value to a variable / struct field that is defined with an enum type, nothing prevents an invalid value being assigned. So defensive code must assume existance of invalid values and thus all switches should have a default: case. Signed-off-by: Daniel P. Berrang=C3=A9 --- po/POTFILES.in | 1 + src/secret/secret_util.c | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/po/POTFILES.in b/po/POTFILES.in index 2859554690..e06aa730f8 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -166,6 +166,7 @@ src/rpc/virnetsocket.c src/rpc/virnetsshsession.c src/rpc/virnettlscontext.c src/secret/secret_driver.c +src/secret/secret_util.c src/security/security_apparmor.c src/security/security_dac.c src/security/security_driver.c diff --git a/src/secret/secret_util.c b/src/secret/secret_util.c index 16e43ab2cc..64d3e7b8bd 100644 --- a/src/secret/secret_util.c +++ b/src/secret/secret_util.c @@ -57,7 +57,7 @@ virSecretGetSecretString(virConnectPtr conn, virSecretPtr sec =3D NULL; int ret =3D -1; =20 - switch (seclookupdef->type) { + switch ((virSecretLookupType)seclookupdef->type) { case VIR_SECRET_LOOKUP_TYPE_UUID: sec =3D conn->secretDriver->secretLookupByUUID(conn, seclookupdef-= >u.uuid); break; @@ -66,6 +66,15 @@ virSecretGetSecretString(virConnectPtr conn, sec =3D conn->secretDriver->secretLookupByUsage(conn, secretUsageT= ype, seclookupdef->u.usag= e); break; + + case VIR_SECRET_LOOKUP_TYPE_NONE: + break; + + case VIR_SECRET_LOOKUP_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected secret lookup type %d"), seclookupdef= ->type); + goto cleanup; } =20 if (!sec) --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713712254392.6354340946358; Thu, 15 Feb 2018 08:55:12 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id B214420262; Thu, 15 Feb 2018 16:55:10 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 5772F5D739; Thu, 15 Feb 2018 16:55:04 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id CCBE31841C74; Thu, 15 Feb 2018 16:55:03 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGi3fZ025798 for ; Thu, 15 Feb 2018 11:44:03 -0500 Received: by smtp.corp.redhat.com (Postfix) id 71BD4200BC0F; Thu, 15 Feb 2018 16:44:03 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id 13A092024CA8; Thu, 15 Feb 2018 16:44:02 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:25 +0000 Message-Id: <20180215164347.11538-21-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 20/42] xen: add default: case to all switch statements X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Thu, 15 Feb 2018 16:55:11 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Even if the compiler has validated that all enum constants have case statements in a switch, it is not safe to omit a default: case statement. When assigning a value to a variable / struct field that is defined with an enum type, nothing prevents an invalid value being assigned. So defensive code must assume existance of invalid values and thus all switches should have a default: case. Signed-off-by: Daniel P. Berrang=C3=A9 --- src/libvirt_private.syms | 2 ++ src/xen/xen_driver.c | 17 ++++++++++++++++- src/xenconfig/xen_common.c | 6 +++++- src/xenconfig/xen_sxpr.c | 47 +++++++++++++++++++++++++++++++++++-------= ---- src/xenconfig/xen_xl.c | 20 +++++++++++++++++--- 5 files changed, 76 insertions(+), 16 deletions(-) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 3b14d7d158..87a9c85f09 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -402,6 +402,8 @@ virDomainInputBusTypeToString; virDomainInputDefFind; virDomainInputDefFree; virDomainInputDefGetPath; +virDomainInputTypeFromString; +virDomainInputTypeToString; virDomainIOMMUModelTypeFromString; virDomainIOMMUModelTypeToString; virDomainIOThreadIDAdd; diff --git a/src/xen/xen_driver.c b/src/xen/xen_driver.c index f521fd1f2c..0dee96d21a 100644 --- a/src/xen/xen_driver.c +++ b/src/xen/xen_driver.c @@ -344,7 +344,7 @@ xenDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, } =20 if (dev->type =3D=3D VIR_DOMAIN_DEVICE_VIDEO && dev->data.video->vram = =3D=3D 0) { - switch (dev->data.video->type) { + switch ((virDomainVideoType)dev->data.video->type) { case VIR_DOMAIN_VIDEO_TYPE_VGA: case VIR_DOMAIN_VIDEO_TYPE_CIRRUS: case VIR_DOMAIN_VIDEO_TYPE_VMVGA: @@ -359,6 +359,21 @@ xenDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, case VIR_DOMAIN_VIDEO_TYPE_QXL: /* Use 64M as the minimal video video memory for qxl device */ return 64 * 1024; + case VIR_DOMAIN_VIDEO_TYPE_DEFAULT: + return 0; + case VIR_DOMAIN_VIDEO_TYPE_VBOX: + case VIR_DOMAIN_VIDEO_TYPE_PARALLELS: + case VIR_DOMAIN_VIDEO_TYPE_VIRTIO: + case VIR_DOMAIN_VIDEO_TYPE_GOP: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Unsupported video type %s"), + virDomainVideoTypeToString(dev->data.video->typ= e)); + return -1; + case VIR_DOMAIN_VIDEO_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected video type %d"), dev->data.video-= >type); + return -1; } } =20 diff --git a/src/xenconfig/xen_common.c b/src/xenconfig/xen_common.c index c3fe5d39dc..900c2dd5f0 100644 --- a/src/xenconfig/xen_common.c +++ b/src/xenconfig/xen_common.c @@ -1721,7 +1721,11 @@ xenFormatCPUFeatures(virConfPtr conf, virDomainDefPt= r def) return -1; =20 case VIR_DOMAIN_TIMER_NAME_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected timer name %d"), + def->clock.timers[i]->name); + return -1; } } =20 diff --git a/src/xenconfig/xen_sxpr.c b/src/xenconfig/xen_sxpr.c index e868c05695..146947364c 100644 --- a/src/xenconfig/xen_sxpr.c +++ b/src/xenconfig/xen_sxpr.c @@ -212,7 +212,7 @@ xenParseSxprChar(const char *value, } } =20 - switch (def->source->type) { + switch ((virDomainChrType)def->source->type) { case VIR_DOMAIN_CHR_TYPE_PTY: if (VIR_STRDUP(def->source->data.file.path, tty) < 0) goto error; @@ -304,6 +304,25 @@ xenParseSxprChar(const char *value, def->source->data.nix.listen =3D true; } break; + + case VIR_DOMAIN_CHR_TYPE_NULL: + case VIR_DOMAIN_CHR_TYPE_STDIO: + case VIR_DOMAIN_CHR_TYPE_DEV: + break; + case VIR_DOMAIN_CHR_TYPE_VC: + case VIR_DOMAIN_CHR_TYPE_SPICEVMC: + case VIR_DOMAIN_CHR_TYPE_SPICEPORT: + case VIR_DOMAIN_CHR_TYPE_NMDM: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Unsupported chardev type %s"), + virDomainChrTypeToString(def->source->type)); + goto error; + + case VIR_DOMAIN_CHR_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected chardev type %d"), def->source->type); + goto error; } =20 return def; @@ -1931,8 +1950,12 @@ xenFormatSxprNet(virConnectPtr conn, case VIR_DOMAIN_NET_TYPE_INTERNAL: case VIR_DOMAIN_NET_TYPE_DIRECT: case VIR_DOMAIN_NET_TYPE_HOSTDEV: - case VIR_DOMAIN_NET_TYPE_LAST: break; + case VIR_DOMAIN_NET_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected net type %d"), def->type); + return -1; } =20 if (def->ifname !=3D NULL && @@ -2122,15 +2145,7 @@ xenFormatSxprInput(virDomainInputDefPtr input, if (input->bus !=3D VIR_DOMAIN_INPUT_BUS_USB) return 0; =20 - if (input->type !=3D VIR_DOMAIN_INPUT_TYPE_MOUSE && - input->type !=3D VIR_DOMAIN_INPUT_TYPE_TABLET && - input->type !=3D VIR_DOMAIN_INPUT_TYPE_KBD) { - virReportError(VIR_ERR_INTERNAL_ERROR, - _("unexpected input type %d"), input->type); - return -1; - } - - switch (input->type) { + switch ((virDomainInputType)input->type) { case VIR_DOMAIN_INPUT_TYPE_MOUSE: virBufferAsprintf(buf, "(usbdevice %s)", "mouse"); break; @@ -2140,6 +2155,16 @@ xenFormatSxprInput(virDomainInputDefPtr input, case VIR_DOMAIN_INPUT_TYPE_KBD: virBufferAsprintf(buf, "(usbdevice %s)", "keyboard"); break; + case VIR_DOMAIN_INPUT_TYPE_PASSTHROUGH: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Unsupported input type %s"), + virDomainInputTypeToString(input->type)); + return -1; + case VIR_DOMAIN_INPUT_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected input type %d"), input->type); + return -1; } =20 return 0; diff --git a/src/xenconfig/xen_xl.c b/src/xenconfig/xen_xl.c index e61784aff2..c098b0b4ee 100644 --- a/src/xenconfig/xen_xl.c +++ b/src/xenconfig/xen_xl.c @@ -1173,8 +1173,13 @@ xenFormatXLOS(virConfPtr conf, virDomainDefPtr def) case VIR_CPU_FEATURE_FORCE: case VIR_CPU_FEATURE_REQUIRE: case VIR_CPU_FEATURE_OPTIONAL: - case VIR_CPU_FEATURE_LAST: break; + case VIR_CPU_FEATURE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected CPU feature polic= y %d"), + def->cpu->features[i].policy); + return -1; } } } @@ -1357,7 +1362,6 @@ xenFormatXLDiskSrcNet(virStorageSourcePtr src) case VIR_STORAGE_NET_PROTOCOL_SHEEPDOG: case VIR_STORAGE_NET_PROTOCOL_SSH: case VIR_STORAGE_NET_PROTOCOL_VXHS: - case VIR_STORAGE_NET_PROTOCOL_LAST: case VIR_STORAGE_NET_PROTOCOL_NONE: virReportError(VIR_ERR_NO_SUPPORT, _("Unsupported network block protocol '%s'"), @@ -1399,6 +1403,12 @@ xenFormatXLDiskSrcNet(virStorageSourcePtr src) =20 ret =3D virBufferContentAndReset(&buf); break; + case VIR_STORAGE_NET_PROTOCOL_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected storage protocol %d"), + src->protocol); + goto cleanup; } =20 cleanup: @@ -1433,8 +1443,12 @@ xenFormatXLDiskSrc(virStorageSourcePtr src, char **s= rcstr) =20 case VIR_STORAGE_TYPE_VOLUME: case VIR_STORAGE_TYPE_NONE: - case VIR_STORAGE_TYPE_LAST: break; + default: + case VIR_STORAGE_TYPE_LAST: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected storage type %d"), + actualType); } =20 return 0; --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713720918314.87771151813115; Thu, 15 Feb 2018 08:55:20 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id EF4CF3F741; Thu, 15 Feb 2018 16:55:18 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 95FB8609AD; Thu, 15 Feb 2018 16:55:12 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 87A7B4EEA2; Thu, 15 Feb 2018 16:55:12 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGi4Zn025807 for ; Thu, 15 Feb 2018 11:44:04 -0500 Received: by smtp.corp.redhat.com (Postfix) id 088FF2024CAB; Thu, 15 Feb 2018 16:44:04 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9FBB02024CA8; Thu, 15 Feb 2018 16:44:03 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:26 +0000 Message-Id: <20180215164347.11538-22-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 21/42] locking: add default: case to all switch statements X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Thu, 15 Feb 2018 16:55:19 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Even if the compiler has validated that all enum constants have case statements in a switch, it is not safe to omit a default: case statement. When assigning a value to a variable / struct field that is defined with an enum type, nothing prevents an invalid value being assigned. So defensive code must assume existance of invalid values and thus all switches should have a default: case. Signed-off-by: Daniel P. Berrang=C3=A9 --- src/locking/lock_driver_sanlock.c | 6 +++++- src/locking/lock_manager.c | 2 ++ src/locking/sanlock_helper.c | 5 ++++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/locking/lock_driver_sanlock.c b/src/locking/lock_driver_sa= nlock.c index 345cf0a772..4a9971ac9f 100644 --- a/src/locking/lock_driver_sanlock.c +++ b/src/locking/lock_driver_sanlock.c @@ -859,11 +859,15 @@ virLockManagerSanlockRegisterKillscript(int sock, =20 case VIR_DOMAIN_LOCK_FAILURE_RESTART: case VIR_DOMAIN_LOCK_FAILURE_IGNORE: - case VIR_DOMAIN_LOCK_FAILURE_LAST: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Failure action %s is not supported by sanlock"), virDomainLockFailureTypeToString(action)); goto cleanup; + case VIR_DOMAIN_LOCK_FAILURE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected lock failure action %d"), action); + goto cleanup; } =20 virBufferEscape(&buf, '\\', "\\ ", "%s", vmuri); diff --git a/src/locking/lock_manager.c b/src/locking/lock_manager.c index 4ef9f9e692..03e28f1159 100644 --- a/src/locking/lock_manager.c +++ b/src/locking/lock_manager.c @@ -97,6 +97,8 @@ static void virLockManagerLogParams(size_t nparams, virUUIDFormat(params[i].value.uuid, uuidstr); VIR_DEBUG(" key=3D%s type=3Duuid value=3D%s", params[i].key, = uuidstr); break; + default: + break; } } } diff --git a/src/locking/sanlock_helper.c b/src/locking/sanlock_helper.c index 57e1cfb031..6a2f59e866 100644 --- a/src/locking/sanlock_helper.c +++ b/src/locking/sanlock_helper.c @@ -94,10 +94,13 @@ main(int argc, char **argv) case VIR_DOMAIN_LOCK_FAILURE_DEFAULT: case VIR_DOMAIN_LOCK_FAILURE_RESTART: case VIR_DOMAIN_LOCK_FAILURE_IGNORE: - case VIR_DOMAIN_LOCK_FAILURE_LAST: fprintf(stderr, _("unsupported failure action: '%s'\n"), virDomainLockFailureTypeToString(action)); break; + case VIR_DOMAIN_LOCK_FAILURE_LAST: + default: + fprintf(stderr, _("Unexpected failure action: %d\n"), action); + break; } =20 cleanup: --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713729999979.9104450958909; Thu, 15 Feb 2018 08:55:29 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id A22C2776C1; Thu, 15 Feb 2018 16:55:21 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 7AB3B60C4E; Thu, 15 Feb 2018 16:55:21 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 463B84EF09; Thu, 15 Feb 2018 16:55:21 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGi4UZ025813 for ; Thu, 15 Feb 2018 11:44:04 -0500 Received: by smtp.corp.redhat.com (Postfix) id 93AF32024CAA; Thu, 15 Feb 2018 16:44:04 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id 36BE12024CA8; Thu, 15 Feb 2018 16:44:04 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:27 +0000 Message-Id: <20180215164347.11538-23-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 22/42] test: add default: case to all switch statements X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Thu, 15 Feb 2018 16:55:22 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Even if the compiler has validated that all enum constants have case statements in a switch, it is not safe to omit a default: case statement. When assigning a value to a variable / struct field that is defined with an enum type, nothing prevents an invalid value being assigned. So defensive code must assume existance of invalid values and thus all switches should have a default: case. Signed-off-by: Daniel P. Berrang=C3=A9 --- src/test/test_driver.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 043caa9762..6eabfc1cfa 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -2921,6 +2921,8 @@ testNodeGetCPUStats(virConnectPtr conn ATTRIBUTE_UNUS= ED, VIR_NODE_CPU_STATS_IOWAIT, 763600000= ) < 0) return -1; break; + default: + break; } } =20 --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713533966902.7772425036267; Thu, 15 Feb 2018 08:52:13 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id B858CC058ED4; Thu, 15 Feb 2018 16:52:12 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 9111E60CAD; Thu, 15 Feb 2018 16:52:12 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 57B4818033F9; Thu, 15 Feb 2018 16:52:12 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGi5Nu025819 for ; Thu, 15 Feb 2018 11:44:05 -0500 Received: by smtp.corp.redhat.com (Postfix) id 2B6972024CAA; Thu, 15 Feb 2018 16:44:05 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id C1E132024CA8; Thu, 15 Feb 2018 16:44:04 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:28 +0000 Message-Id: <20180215164347.11538-24-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 23/42] remote: add default: case to all switch statements X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Thu, 15 Feb 2018 16:52:13 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Even if the compiler has validated that all enum constants have case statements in a switch, it is not safe to omit a default: case statement. When assigning a value to a variable / struct field that is defined with an enum type, nothing prevents an invalid value being assigned. So defensive code must assume existance of invalid values and thus all switches should have a default: case. Signed-off-by: Daniel P. Berrang=C3=A9 --- src/remote/remote_driver.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index 9ea726dc45..bc4842fca6 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -1131,6 +1131,11 @@ doRemoteOpen(virConnectPtr conn, goto failed; =20 #endif /* WIN32 */ + + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected remote transport type %d"), transport= ); + goto failed; } /* switch (transport) */ =20 =20 @@ -3742,7 +3747,7 @@ remoteAuthenticate(virConnectPtr conn, struct private= _data *priv, #if WITH_SASL static int remoteAuthCredVir2SASL(int vircred) { - switch (vircred) { + switch ((virConnectCredentialType)vircred) { case VIR_CRED_USERNAME: return SASL_CB_USER; =20 @@ -3766,9 +3771,12 @@ static int remoteAuthCredVir2SASL(int vircred) =20 case VIR_CRED_REALM: return SASL_CB_GETREALM; - } =20 - return 0; + case VIR_CRED_EXTERNAL: + case VIR_CRED_LAST: + default: + return 0; + } } =20 static int remoteAuthCredSASL2Vir(int vircred) @@ -3797,9 +3805,10 @@ static int remoteAuthCredSASL2Vir(int vircred) =20 case SASL_CB_GETREALM: return VIR_CRED_REALM; - } =20 - return 0; + default: + return 0; + } } =20 /* --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 151871373899353.65405878870865; Thu, 15 Feb 2018 08:55:38 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 5B5AF5B2FB; Thu, 15 Feb 2018 16:55:37 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 2A52660CA8; Thu, 15 Feb 2018 16:55:29 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id D7C231841C78; Thu, 15 Feb 2018 16:55:28 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGi50n025825 for ; Thu, 15 Feb 2018 11:44:05 -0500 Received: by smtp.corp.redhat.com (Postfix) id B6F9D2026609; Thu, 15 Feb 2018 16:44:05 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id 599222024CA8; Thu, 15 Feb 2018 16:44:05 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:29 +0000 Message-Id: <20180215164347.11538-25-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 24/42] openvz: add default: case to all switch statements X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Thu, 15 Feb 2018 16:55:38 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Even if the compiler has validated that all enum constants have case statements in a switch, it is not safe to omit a default: case statement. When assigning a value to a variable / struct field that is defined with an enum type, nothing prevents an invalid value being assigned. So defensive code must assume existance of invalid values and thus all switches should have a default: case. Signed-off-by: Daniel P. Berrang=C3=A9 --- src/openvz/openvz_driver.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/openvz/openvz_driver.c b/src/openvz/openvz_driver.c index 9bd73d85c4..6c434dd13c 100644 --- a/src/openvz/openvz_driver.c +++ b/src/openvz/openvz_driver.c @@ -1866,6 +1866,9 @@ openvzDomainGetMemoryParameters(virDomainPtr domain, VIR_TYPED_PARAM_ULLONG, val) < 0) goto cleanup; break; + + default: + break; } } =20 --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713740023362.4246670291726; Thu, 15 Feb 2018 08:55:40 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 9CAAD40D9E; Thu, 15 Feb 2018 16:55:38 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 498CD19CBD; Thu, 15 Feb 2018 16:55:38 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id A1CB31843726; Thu, 15 Feb 2018 16:55:36 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGi6hX025833 for ; Thu, 15 Feb 2018 11:44:06 -0500 Received: by smtp.corp.redhat.com (Postfix) id 4E2082024CAB; Thu, 15 Feb 2018 16:44:06 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id E57142024CA8; Thu, 15 Feb 2018 16:44:05 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:30 +0000 Message-Id: <20180215164347.11538-26-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 25/42] security: add default: case to all switch statements X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Thu, 15 Feb 2018 16:55:39 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Even if the compiler has validated that all enum constants have case statements in a switch, it is not safe to omit a default: case statement. When assigning a value to a variable / struct field that is defined with an enum type, nothing prevents an invalid value being assigned. So defensive code must assume existance of invalid values and thus all switches should have a default: case. Signed-off-by: Daniel P. Berrang=C3=A9 --- src/security/security_apparmor.c | 12 +++++-- src/security/security_dac.c | 59 ++++++++++++++++++++++++++++------ src/security/security_selinux.c | 69 ++++++++++++++++++++++++++++++++----= ---- 3 files changed, 115 insertions(+), 25 deletions(-) diff --git a/src/security/security_apparmor.c b/src/security/security_appar= mor.c index a9899923ac..7943743494 100644 --- a/src/security/security_apparmor.c +++ b/src/security/security_apparmor.c @@ -919,7 +919,10 @@ AppArmorSetSecurityHostdevLabel(virSecurityManagerPtr = mgr, } =20 case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST: - ret =3D 0; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected hostdev subsystem type %d"), + dev->source.subsys.type); break; } =20 @@ -990,9 +993,14 @@ AppArmorSetChardevLabel(virSecurityManagerPtr mgr, case VIR_DOMAIN_CHR_TYPE_TCP: case VIR_DOMAIN_CHR_TYPE_SPICEVMC: case VIR_DOMAIN_CHR_TYPE_NMDM: - case VIR_DOMAIN_CHR_TYPE_LAST: ret =3D 0; break; + case VIR_DOMAIN_CHR_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected chardev type %d"), + dev_source->type); + break; } =20 done: diff --git a/src/security/security_dac.c b/src/security/security_dac.c index 74446d6644..7142b802f9 100644 --- a/src/security/security_dac.c +++ b/src/security/security_dac.c @@ -1009,7 +1009,10 @@ virSecurityDACSetHostdevLabel(virSecurityManagerPtr = mgr, } =20 case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST: - ret =3D 0; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected hostdev subsys type %d"), + dev->source.subsys.type); break; } =20 @@ -1177,7 +1180,10 @@ virSecurityDACRestoreHostdevLabel(virSecurityManager= Ptr mgr, } =20 case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST: - ret =3D 0; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected hostdev subsys type %d"), + dev->source.subsys.type); break; } =20 @@ -1265,9 +1271,13 @@ virSecurityDACSetChardevLabel(virSecurityManagerPtr = mgr, case VIR_DOMAIN_CHR_TYPE_TCP: case VIR_DOMAIN_CHR_TYPE_SPICEVMC: case VIR_DOMAIN_CHR_TYPE_NMDM: - case VIR_DOMAIN_CHR_TYPE_LAST: ret =3D 0; break; + case VIR_DOMAIN_CHR_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected chardev type %d"), dev_source->type); + break; } =20 done: @@ -1328,9 +1338,13 @@ virSecurityDACRestoreChardevLabel(virSecurityManager= Ptr mgr, case VIR_DOMAIN_CHR_TYPE_SPICEVMC: case VIR_DOMAIN_CHR_TYPE_SPICEPORT: case VIR_DOMAIN_CHR_TYPE_NMDM: - case VIR_DOMAIN_CHR_TYPE_LAST: ret =3D 0; break; + case VIR_DOMAIN_CHR_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected chardev type %d"), dev_source->type); + break; } =20 done: @@ -1372,6 +1386,10 @@ virSecurityDACSetTPMFileLabel(virSecurityManagerPtr = mgr, false); break; case VIR_DOMAIN_TPM_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected TPM type %d"), tpm->type); + ret =3D -1; break; } =20 @@ -1393,6 +1411,10 @@ virSecurityDACRestoreTPMFileLabel(virSecurityManager= Ptr mgr, false); break; case VIR_DOMAIN_TPM_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected TPM type %d"), tpm->type); + ret =3D -1; break; } =20 @@ -1475,9 +1497,13 @@ virSecurityDACSetInputLabel(virSecurityManagerPtr mg= r, case VIR_DOMAIN_INPUT_TYPE_MOUSE: case VIR_DOMAIN_INPUT_TYPE_TABLET: case VIR_DOMAIN_INPUT_TYPE_KBD: - case VIR_DOMAIN_INPUT_TYPE_LAST: ret =3D 0; break; + case VIR_DOMAIN_INPUT_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected input type %d"), input->type); + break; } =20 return ret; @@ -1499,9 +1525,13 @@ virSecurityDACRestoreInputLabel(virSecurityManagerPt= r mgr, case VIR_DOMAIN_INPUT_TYPE_MOUSE: case VIR_DOMAIN_INPUT_TYPE_TABLET: case VIR_DOMAIN_INPUT_TYPE_KBD: - case VIR_DOMAIN_INPUT_TYPE_LAST: ret =3D 0; break; + case VIR_DOMAIN_INPUT_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected input type %d"), input->type); + break; } =20 return ret; @@ -1522,10 +1552,14 @@ virSecurityDACRestoreMemoryLabel(virSecurityManager= Ptr mgr, break; =20 case VIR_DOMAIN_MEMORY_MODEL_DIMM: - case VIR_DOMAIN_MEMORY_MODEL_LAST: case VIR_DOMAIN_MEMORY_MODEL_NONE: ret =3D 0; break; + case VIR_DOMAIN_MEMORY_MODEL_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected memory model %d"), mem->model); + break; } =20 return ret; @@ -1647,10 +1681,14 @@ virSecurityDACSetMemoryLabel(virSecurityManagerPtr = mgr, break; =20 case VIR_DOMAIN_MEMORY_MODEL_DIMM: - case VIR_DOMAIN_MEMORY_MODEL_LAST: case VIR_DOMAIN_MEMORY_MODEL_NONE: ret =3D 0; break; + case VIR_DOMAIN_MEMORY_MODEL_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected memory model %d"), mem->model); + break; } =20 return ret; @@ -1903,9 +1941,10 @@ virSecurityDACGenLabel(virSecurityManagerPtr mgr, return 0; case VIR_DOMAIN_SECLABEL_DEFAULT: case VIR_DOMAIN_SECLABEL_LAST: + default: virReportError(VIR_ERR_INTERNAL_ERROR, - _("unexpected security label type '%s'"), - virDomainSeclabelTypeToString(seclabel->type)); + _("unexpected security label type %d"), + seclabel->type); return rc; } =20 diff --git a/src/security/security_selinux.c b/src/security/security_selinu= x.c index c26cdacd9f..a33d07b6ab 100644 --- a/src/security/security_selinux.c +++ b/src/security/security_selinux.c @@ -763,7 +763,7 @@ virSecuritySELinuxGenLabel(virSecurityManagerPtr mgr, =20 VIR_DEBUG("type=3D%d", seclabel->type); =20 - switch (seclabel->type) { + switch ((virDomainSeclabelType)seclabel->type) { case VIR_DOMAIN_SECLABEL_STATIC: if (!(ctx =3D context_new(seclabel->label))) { virReportSystemError(errno, @@ -832,10 +832,12 @@ virSecuritySELinuxGenLabel(virSecurityManagerPtr mgr, =20 break; =20 + case VIR_DOMAIN_SECLABEL_DEFAULT: + case VIR_DOMAIN_SECLABEL_LAST: default: virReportError(VIR_ERR_INTERNAL_ERROR, - _("unexpected security label type '%s'"), - virDomainSeclabelTypeToString(seclabel->type)); + _("unexpected security label type '%d'"), + seclabel->type); goto cleanup; } =20 @@ -1346,8 +1348,12 @@ virSecuritySELinuxSetInputLabel(virSecurityManagerPt= r mgr, case VIR_DOMAIN_INPUT_TYPE_MOUSE: case VIR_DOMAIN_INPUT_TYPE_TABLET: case VIR_DOMAIN_INPUT_TYPE_KBD: - case VIR_DOMAIN_INPUT_TYPE_LAST: break; + case VIR_DOMAIN_INPUT_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected input type %d"), input->type); + return -1; } =20 return 0; @@ -1374,8 +1380,12 @@ virSecuritySELinuxRestoreInputLabel(virSecurityManag= erPtr mgr, case VIR_DOMAIN_INPUT_TYPE_MOUSE: case VIR_DOMAIN_INPUT_TYPE_TABLET: case VIR_DOMAIN_INPUT_TYPE_KBD: - case VIR_DOMAIN_INPUT_TYPE_LAST: break; + case VIR_DOMAIN_INPUT_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected input type %d"), input->type); + return -1; } =20 return rc; @@ -1402,8 +1412,12 @@ virSecuritySELinuxSetMemoryLabel(virSecurityManagerP= tr mgr, =20 case VIR_DOMAIN_MEMORY_MODEL_NONE: case VIR_DOMAIN_MEMORY_MODEL_DIMM: - case VIR_DOMAIN_MEMORY_MODEL_LAST: break; + case VIR_DOMAIN_MEMORY_MODEL_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected memory model %d"), mem->model); + return -1; } =20 return 0; @@ -1429,9 +1443,13 @@ virSecuritySELinuxRestoreMemoryLabel(virSecurityMana= gerPtr mgr, =20 case VIR_DOMAIN_MEMORY_MODEL_DIMM: case VIR_DOMAIN_MEMORY_MODEL_NONE: - case VIR_DOMAIN_MEMORY_MODEL_LAST: ret =3D 0; break; + case VIR_DOMAIN_MEMORY_MODEL_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected memory model %d"), mem->model); + return -1; } =20 return ret; @@ -1473,6 +1491,9 @@ virSecuritySELinuxSetTPMFileLabel(virSecurityManagerP= tr mgr, } break; case VIR_DOMAIN_TPM_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected TPM type %d"), tpm->type); break; } =20 @@ -1506,6 +1527,9 @@ virSecuritySELinuxRestoreTPMFileLabelInt(virSecurityM= anagerPtr mgr, } break; case VIR_DOMAIN_TPM_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected TPM type %d"), tpm->type); break; } =20 @@ -1860,7 +1884,10 @@ virSecuritySELinuxSetHostdevSubsysLabel(virSecurityM= anagerPtr mgr, } =20 case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST: - ret =3D 0; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected hostdev subsystem type %d"), + dev->source.subsys.type); break; } =20 @@ -1883,7 +1910,7 @@ virSecuritySELinuxSetHostdevCapsLabel(virSecurityMana= gerPtr mgr, if (secdef =3D=3D NULL) return 0; =20 - switch (dev->source.caps.type) { + switch ((virDomainHostdevCapsType)dev->source.caps.type) { case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_STORAGE: { if (vroot) { if (virAsprintf(&path, "%s/%s", vroot, @@ -1912,9 +1939,15 @@ virSecuritySELinuxSetHostdevCapsLabel(virSecurityMan= agerPtr mgr, break; } =20 - default: + case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_NET: ret =3D 0; break; + case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected hostdev caps type %d"), + dev->source.caps.type); + break; } =20 return ret; @@ -2101,7 +2134,10 @@ virSecuritySELinuxRestoreHostdevSubsysLabel(virSecur= ityManagerPtr mgr, } =20 case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST: - ret =3D 0; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected hostdev subsystem type %d"), + dev->source.subsys.type); break; } =20 @@ -2118,7 +2154,7 @@ virSecuritySELinuxRestoreHostdevCapsLabel(virSecurity= ManagerPtr mgr, int ret =3D -1; char *path; =20 - switch (dev->source.caps.type) { + switch ((virDomainHostdevCapsType)dev->source.caps.type) { case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_STORAGE: { if (vroot) { if (virAsprintf(&path, "%s/%s", vroot, @@ -2147,9 +2183,16 @@ virSecuritySELinuxRestoreHostdevCapsLabel(virSecurit= yManagerPtr mgr, break; } =20 - default: + case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_NET: ret =3D 0; break; + + case VIR_DOMAIN_HOSTDEV_CAPS_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected hostdev subsystem type %d"), + dev->source.subsys.type); + break; } =20 return ret; --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713564270700.799121493291; Thu, 15 Feb 2018 08:52:44 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id B6A2978559; Thu, 15 Feb 2018 16:52:39 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 87AEE6A943; Thu, 15 Feb 2018 16:52:39 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 48A224A481; Thu, 15 Feb 2018 16:52:39 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGi75m025841 for ; Thu, 15 Feb 2018 11:44:07 -0500 Received: by smtp.corp.redhat.com (Postfix) id E95672024CAB; Thu, 15 Feb 2018 16:44:06 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id 8B9A62024CA8; Thu, 15 Feb 2018 16:44:06 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:31 +0000 Message-Id: <20180215164347.11538-27-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 26/42] rpc: add default: case to all switch statements X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Thu, 15 Feb 2018 16:52:40 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Even if the compiler has validated that all enum constants have case statements in a switch, it is not safe to omit a default: case statement. When assigning a value to a variable / struct field that is defined with an enum type, nothing prevents an invalid value being assigned. So defensive code must assume existance of invalid values and thus all switches should have a default: case. Signed-off-by: Daniel P. Berrang=C3=A9 --- src/rpc/virnetlibsshsession.c | 4 ++++ src/rpc/virnetservermdns.c | 5 ++++- src/rpc/virnetsshsession.c | 8 ++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/rpc/virnetlibsshsession.c b/src/rpc/virnetlibsshsession.c index 25f93cec97..25d65878b2 100644 --- a/src/rpc/virnetlibsshsession.c +++ b/src/rpc/virnetlibsshsession.c @@ -880,6 +880,10 @@ virNetLibsshAuthenticate(virNetLibsshSessionPtr sess) /* try to authenticate with password */ ret =3D virNetLibsshAuthenticatePassword(sess, auth); break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected SSH auth method %d"), auth->metho= d); + return -1; } =20 if (ret =3D=3D SSH_AUTH_ERROR) { diff --git a/src/rpc/virnetservermdns.c b/src/rpc/virnetservermdns.c index 0a2bc87322..7e3b7e632a 100644 --- a/src/rpc/virnetservermdns.c +++ b/src/rpc/virnetservermdns.c @@ -133,6 +133,7 @@ static void virNetServerMDNSGroupCallback(AvahiEntryGro= up *g ATTRIBUTE_UNUSED, =20 case AVAHI_ENTRY_GROUP_UNCOMMITED: case AVAHI_ENTRY_GROUP_REGISTERING: + default: ; } } @@ -249,7 +250,9 @@ static void virNetServerMDNSClientCallback(AvahiClient = *c, =20 case AVAHI_CLIENT_CONNECTING: VIR_DEBUG("Client connecting.... %p", mdns->client); - ; + break; + default: + break; } } =20 diff --git a/src/rpc/virnetsshsession.c b/src/rpc/virnetsshsession.c index e742175654..40256d0f9a 100644 --- a/src/rpc/virnetsshsession.c +++ b/src/rpc/virnetsshsession.c @@ -813,6 +813,10 @@ virNetSSHAuthenticateKeyboardInteractive(virNetSSHSess= ionPtr sess, case VIR_NET_SSH_AUTHCB_OK: /* everything went fine, let's continue */ break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected SSH auth code %d"), sess->authCbE= rr); + return -1; } =20 if (ret =3D=3D 0) @@ -897,6 +901,10 @@ virNetSSHAuthenticate(virNetSSHSessionPtr sess) if (strstr(auth_list, "password")) ret =3D virNetSSHAuthenticatePassword(sess, auth); break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected SSH auth method %d"), auth->metho= d); + return -1; } =20 /* return on success or error */ --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713746461750.8567071412898; Thu, 15 Feb 2018 08:55:46 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E49FB78559; Thu, 15 Feb 2018 16:55:44 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id BC4C45D756; Thu, 15 Feb 2018 16:55:44 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 824EF4EF0E; Thu, 15 Feb 2018 16:55:44 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGi7T8025855 for ; Thu, 15 Feb 2018 11:44:07 -0500 Received: by smtp.corp.redhat.com (Postfix) id 822DF2024CAB; Thu, 15 Feb 2018 16:44:07 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id 245162024CA8; Thu, 15 Feb 2018 16:44:07 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:32 +0000 Message-Id: <20180215164347.11538-28-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 27/42] vbox: add default: case to all switch statements X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Thu, 15 Feb 2018 16:55:45 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Even if the compiler has validated that all enum constants have case statements in a switch, it is not safe to omit a default: case statement. When assigning a value to a variable / struct field that is defined with an enum type, nothing prevents an invalid value being assigned. So defensive code must assume existance of invalid values and thus all switches should have a default: case. Signed-off-by: Daniel P. Berrang=C3=A9 --- src/vbox/vbox_common.c | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/src/vbox/vbox_common.c b/src/vbox/vbox_common.c index 07f4308784..b7b8ddb2be 100644 --- a/src/vbox/vbox_common.c +++ b/src/vbox/vbox_common.c @@ -331,7 +331,7 @@ vboxGenerateMediumName(PRUint32 storageBus, =20 break; case StorageBus_Null: - + default: return NULL; } =20 @@ -380,11 +380,16 @@ vboxSetStorageController(virDomainControllerDefPtr co= ntroller, case VIR_DOMAIN_CONTROLLER_TYPE_CCID: case VIR_DOMAIN_CONTROLLER_TYPE_USB: case VIR_DOMAIN_CONTROLLER_TYPE_PCI: - case VIR_DOMAIN_CONTROLLER_TYPE_LAST: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("The vbox driver does not support %s controller t= ype"), virDomainControllerTypeToString(controller->type)); return -1; + case VIR_DOMAIN_CONTROLLER_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected controller type %d"), + controller->type); + return -1; } =20 /* libvirt scsi model =3D> vbox scsi model */ @@ -417,6 +422,7 @@ vboxSetStorageController(virDomainControllerDefPtr cont= roller, goto cleanup; case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_DEFAULT: case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST: + default: virReportError(VIR_ERR_INTERNAL_ERROR, _("Unexpected SCSI controller model %d"), controller->model); @@ -439,6 +445,7 @@ vboxSetStorageController(virDomainControllerDefPtr cont= roller, break; case VIR_DOMAIN_CONTROLLER_MODEL_IDE_LAST: case VIR_DOMAIN_CONTROLLER_MODEL_IDE_DEFAULT: + default: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Unexpected IDE controller model %d"), controller->model); @@ -1110,12 +1117,17 @@ vboxAttachDrives(virDomainDefPtr def, vboxDriverPtr= data, IMachine *machine) =20 break; case VIR_DOMAIN_DISK_DEVICE_LUN: - case VIR_DOMAIN_DISK_DEVICE_LAST: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("The vbox driver does not support %s disk dev= ice"), virDomainDiskDeviceTypeToString(disk->device)); ret =3D -1; goto cleanup; + case VIR_DOMAIN_DISK_DEVICE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected disk device type %d"), disk->devi= ce); + ret =3D -1; + goto cleanup; } =20 switch ((virDomainDiskBus) disk->bus) { @@ -1150,12 +1162,17 @@ vboxAttachDrives(virDomainDefPtr def, vboxDriverPtr= data, IMachine *machine) case VIR_DOMAIN_DISK_BUS_USB: case VIR_DOMAIN_DISK_BUS_UML: case VIR_DOMAIN_DISK_BUS_SD: - case VIR_DOMAIN_DISK_BUS_LAST: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("The vbox driver does not support %s bus type= "), virDomainDiskBusTypeToString(disk->bus)); ret =3D -1; goto cleanup; + case VIR_DOMAIN_DISK_BUS_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected disk device type %d"), disk->devi= ce); + ret =3D -1; + goto cleanup; } =20 /* If disk source is specified, lookup IMedium - removable drives = don't @@ -3158,6 +3175,7 @@ vboxDumpStorageControllers(virDomainDefPtr def, IMach= ine *machine) case StorageControllerType_IntelAhci: case StorageControllerType_I82078: case StorageControllerType_Null: + default: model =3D -1; =20 break; @@ -3183,6 +3201,7 @@ vboxDumpStorageControllers(virDomainDefPtr def, IMach= ine *machine) =20 break; case StorageBus_Null: + default: virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Unsupported null storage bus")); =20 @@ -3415,6 +3434,7 @@ vboxDumpDisks(virDomainDefPtr def, vboxDriverPtr data= , IMachine *machine) =20 break; case StorageBus_Null: + default: virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Unsupported null storage bus")); goto cleanup; @@ -3437,6 +3457,7 @@ vboxDumpDisks(virDomainDefPtr def, vboxDriverPtr data= , IMachine *machine) case DeviceType_USB: case DeviceType_SharedFolder: case DeviceType_Null: + default: virReportError(VIR_ERR_INTERNAL_ERROR, _("Unsupported vbox device type: %d"), deviceTy= pe); goto cleanup; --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713550058312.8450390522978; Thu, 15 Feb 2018 08:52:30 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id B4A7844838; Thu, 15 Feb 2018 16:52:28 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 87B6519C8B; Thu, 15 Feb 2018 16:52:26 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 5D7684A47A; Thu, 15 Feb 2018 16:52:26 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGi8Jf025865 for ; Thu, 15 Feb 2018 11:44:08 -0500 Received: by smtp.corp.redhat.com (Postfix) id 1A0702026609; Thu, 15 Feb 2018 16:44:08 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id B0E222024CA8; Thu, 15 Feb 2018 16:44:07 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:33 +0000 Message-Id: <20180215164347.11538-29-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 28/42] libxl: add default: case to all switch statements X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Thu, 15 Feb 2018 16:52:29 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Even if the compiler has validated that all enum constants have case statements in a switch, it is not safe to omit a default: case statement. When assigning a value to a variable / struct field that is defined with an enum type, nothing prevents an invalid value being assigned. So defensive code must assume existance of invalid values and thus all switches should have a default: case. Signed-off-by: Daniel P. Berrang=C3=A9 --- src/libxl/libxl_conf.c | 57 ++++++++++++++++++++++++++++++++++++++++----= ---- src/libxl/libxl_domain.c | 23 ++++++++++++++++++- src/libxl/libxl_driver.c | 14 ++++++++++++ src/libxl/libxl_logger.c | 2 ++ 4 files changed, 86 insertions(+), 10 deletions(-) diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c index 970cff205b..e2136a8065 100644 --- a/src/libxl/libxl_conf.c +++ b/src/libxl/libxl_conf.c @@ -118,10 +118,9 @@ libxlActionFromVirLifecycle(virDomainLifecycleAction a= ction) return LIBXL_ACTION_ON_SHUTDOWN_COREDUMP_RESTART; =20 case VIR_DOMAIN_LIFECYCLE_ACTION_LAST: - break; + default: + return 0; } - - return 0; } =20 =20 @@ -147,6 +146,7 @@ libxlMakeDomCreateInfo(libxl_ctx *ctx, =20 case VIR_TRISTATE_SWITCH_ABSENT: case VIR_TRISTATE_SWITCH_LAST: + default: break; } } else { @@ -333,6 +333,10 @@ libxlMakeDomBuildInfo(virDomainDefPtr def, return -1; =20 case VIR_DOMAIN_TIMER_NAME_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected timer name %d"), + def->clock.timers[i]->name); break; } } @@ -379,8 +383,13 @@ libxlMakeDomBuildInfo(virDomainDefPtr def, case VIR_CPU_FEATURE_FORCE: case VIR_CPU_FEATURE_REQUIRE: case VIR_CPU_FEATURE_OPTIONAL: - case VIR_CPU_FEATURE_LAST: break; + case VIR_CPU_FEATURE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected CPU feature polic= y %d"), + def->cpu->features[i].policy); + return -1; } } } @@ -716,7 +725,6 @@ libxlDiskSetDiscard(libxl_device_disk *x_disk, int disc= ard) #if defined(LIBXL_HAVE_LIBXL_DEVICE_DISK_DISCARD_ENABLE) switch ((virDomainDiskDiscard)discard) { case VIR_DOMAIN_DISK_DISCARD_DEFAULT: - case VIR_DOMAIN_DISK_DISCARD_LAST: break; case VIR_DOMAIN_DISK_DISCARD_UNMAP: libxl_defbool_set(&x_disk->discard_enable, true); @@ -724,6 +732,11 @@ libxlDiskSetDiscard(libxl_device_disk *x_disk, int dis= card) case VIR_DOMAIN_DISK_DISCARD_IGNORE: libxl_defbool_set(&x_disk->discard_enable, false); break; + case VIR_DOMAIN_DISK_DISCARD_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected disk discard mode %d"), discard); + return -1; } return 0; #else @@ -757,7 +770,6 @@ libxlMakeNetworkDiskSrcStr(virStorageSourcePtr src, case VIR_STORAGE_NET_PROTOCOL_SHEEPDOG: case VIR_STORAGE_NET_PROTOCOL_SSH: case VIR_STORAGE_NET_PROTOCOL_VXHS: - case VIR_STORAGE_NET_PROTOCOL_LAST: case VIR_STORAGE_NET_PROTOCOL_NONE: virReportError(VIR_ERR_NO_SUPPORT, _("Unsupported network block protocol '%s'"), @@ -809,6 +821,11 @@ libxlMakeNetworkDiskSrcStr(virStorageSourcePtr src, =20 ret =3D virBufferContentAndReset(&buf); break; + case VIR_STORAGE_NET_PROTOCOL_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected storage protocol %d"), src->protocol); + goto cleanup; } =20 cleanup: @@ -1062,6 +1079,7 @@ libxlUpdateDiskDef(virDomainDiskDefPtr l_disk, libxl_= device_disk *x_disk) driver =3D "phy"; break; case LIBXL_DISK_BACKEND_UNKNOWN: + default: break; } if (driver) @@ -1179,11 +1197,15 @@ libxlMakeNic(virDomainDefPtr def, case VIR_DOMAIN_NET_TYPE_INTERNAL: case VIR_DOMAIN_NET_TYPE_DIRECT: case VIR_DOMAIN_NET_TYPE_HOSTDEV: - case VIR_DOMAIN_NET_TYPE_LAST: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("unsupported interface type %s"), virDomainNetTypeToString(l_nic->type)); goto cleanup; + case VIR_DOMAIN_NET_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected net type %d"), l_nic->type); + goto cleanup; } =20 if (l_nic->domain_name) { @@ -1340,8 +1362,16 @@ libxlMakeVfb(virPortAllocatorPtr graphicsports, case VIR_DOMAIN_GRAPHICS_TYPE_RDP: case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP: case VIR_DOMAIN_GRAPHICS_TYPE_SPICE: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Unsupported graphics type %s"), + virDomainGraphicsTypeToString(l_vfb->type)); + return -1; case VIR_DOMAIN_GRAPHICS_TYPE_LAST: - break; + default: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Unexpected graphics type %d"), + l_vfb->type); + return -1; } =20 return 0; @@ -1465,7 +1495,11 @@ libxlMakeBuildInfoVfb(virPortAllocatorPtr graphicspo= rts, libxl_defbool_set(&b_info->u.hvm.spice.agent_mouse, false); break; case VIR_DOMAIN_GRAPHICS_SPICE_MOUSE_MODE_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected mouse mode %d"), + l_vfb->data.spice.mousemode); + return -1; } =20 #ifdef LIBXL_HAVE_SPICE_VDAGENT @@ -1754,6 +1788,11 @@ libxlDriverGetDom0MaxmemConf(libxlDriverConfigPtr cf= g, case 'T': multiplier =3D 1024 * 1024 * 1024; break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected memory suffix '%c'"),= *p); + goto cleanup; + } } *maxmem =3D *maxmem * multiplier; diff --git a/src/libxl/libxl_domain.c b/src/libxl/libxl_domain.c index feb092ba48..73941ca2d3 100644 --- a/src/libxl/libxl_domain.c +++ b/src/libxl/libxl_domain.c @@ -324,7 +324,7 @@ libxlDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, if (dev->type =3D=3D VIR_DOMAIN_DEVICE_VIDEO && def->os.type =3D=3D VI= R_DOMAIN_OSTYPE_HVM) { int dm_type =3D libxlDomainGetEmulatorType(def); =20 - switch (dev->data.video->type) { + switch ((virDomainVideoType)dev->data.video->type) { case VIR_DOMAIN_VIDEO_TYPE_VGA: case VIR_DOMAIN_VIDEO_TYPE_XEN: if (dev->data.video->vram =3D=3D 0) { @@ -346,6 +346,24 @@ libxlDomainDeviceDefPostParse(virDomainDeviceDefPtr de= v, if (dev->data.video->vram =3D=3D 0) dev->data.video->vram =3D 128 * 1024; break; + + case VIR_DOMAIN_VIDEO_TYPE_DEFAULT: + break; + case VIR_DOMAIN_VIDEO_TYPE_VMVGA: + case VIR_DOMAIN_VIDEO_TYPE_VBOX: + case VIR_DOMAIN_VIDEO_TYPE_PARALLELS: + case VIR_DOMAIN_VIDEO_TYPE_VIRTIO: + case VIR_DOMAIN_VIDEO_TYPE_GOP: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Unsupported video type %s"), + virDomainVideoTypeToString(dev->data.video->typ= e)); + return -1; + case VIR_DOMAIN_VIDEO_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected video type %d"), + dev->data.video->type); + return -1; } } =20 @@ -469,6 +487,7 @@ libxlDomainShutdownThread(void *opaque) case VIR_DOMAIN_LIFECYCLE_ACTION_COREDUMP_DESTROY: case VIR_DOMAIN_LIFECYCLE_ACTION_COREDUMP_RESTART: case VIR_DOMAIN_LIFECYCLE_ACTION_LAST: + default: goto endjob; } } else if (xl_reason =3D=3D LIBXL_SHUTDOWN_REASON_CRASH) { @@ -486,6 +505,7 @@ libxlDomainShutdownThread(void *opaque) goto restart; case VIR_DOMAIN_LIFECYCLE_ACTION_PRESERVE: case VIR_DOMAIN_LIFECYCLE_ACTION_LAST: + default: goto endjob; case VIR_DOMAIN_LIFECYCLE_ACTION_COREDUMP_DESTROY: libxlDomainAutoCoreDump(driver, vm); @@ -511,6 +531,7 @@ libxlDomainShutdownThread(void *opaque) case VIR_DOMAIN_LIFECYCLE_ACTION_COREDUMP_DESTROY: case VIR_DOMAIN_LIFECYCLE_ACTION_COREDUMP_RESTART: case VIR_DOMAIN_LIFECYCLE_ACTION_LAST: + default: goto endjob; } } else { diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c index 4b52de36f5..68164d1b91 100644 --- a/src/libxl/libxl_driver.c +++ b/src/libxl/libxl_driver.c @@ -2266,6 +2266,9 @@ libxlDomainSetVcpusFlags(virDomainPtr dom, unsigned i= nt nvcpus, virDomainDefSetVcpus(def, nvcpus) < 0) goto endjob; break; + + default: + break; } =20 ret =3D 0; @@ -3510,7 +3513,15 @@ libxlDomainAttachDeviceConfig(virDomainDefPtr vmdef,= virDomainDeviceDefPtr dev) #ifndef LIBXL_HAVE_PVUSB case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB: #endif + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Unsupported hostdev subsystem type %s"), + virDomainHostdevSubsysTypeToString(hostdev-= >source.subsys.type)); + return -1; case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST: + default: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Unexpected hostdev subsystem type %d"), + hostdev->source.subsys.type); return -1; } =20 @@ -4876,6 +4887,9 @@ libxlDomainGetNumaParameters(virDomainPtr dom, nodeset =3D NULL; =20 break; + + default: + break; } } =20 diff --git a/src/libxl/libxl_logger.c b/src/libxl/libxl_logger.c index 40404826fc..39f9c724b1 100644 --- a/src/libxl/libxl_logger.c +++ b/src/libxl/libxl_logger.c @@ -156,6 +156,8 @@ libxlLoggerNew(const char *logDir, virLogPriority minLe= vel) case VIR_LOG_ERROR: logger.minLevel =3D XTL_ERROR; break; + default: + break; } logger.logDir =3D logDir; =20 --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713755134247.8100556261886; Thu, 15 Feb 2018 08:55:55 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id AC1767B02A; Thu, 15 Feb 2018 16:55:53 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 3319163133; Thu, 15 Feb 2018 16:55:53 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id D72B118033F2; Thu, 15 Feb 2018 16:55:52 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGi8RL025875 for ; Thu, 15 Feb 2018 11:44:08 -0500 Received: by smtp.corp.redhat.com (Postfix) id BF61F2024CAA; Thu, 15 Feb 2018 16:44:08 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4A7A12024CA8; Thu, 15 Feb 2018 16:44:08 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:34 +0000 Message-Id: <20180215164347.11538-30-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 29/42] qemu: add default: case to all switch statements X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Thu, 15 Feb 2018 16:55:54 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Even if the compiler has validated that all enum constants have case statements in a switch, it is not safe to omit a default: case statement. When assigning a value to a variable / struct field that is defined with an enum type, nothing prevents an invalid value being assigned. So defensive code must assume existance of invalid values and thus all switches should have a default: case. Signed-off-by: Daniel P. Berrang=C3=A9 --- src/libvirt_private.syms | 2 + src/qemu/qemu_alias.c | 3 + src/qemu/qemu_block.c | 22 ++- src/qemu/qemu_blockjob.c | 1 + src/qemu/qemu_capabilities.c | 23 ++- src/qemu/qemu_cgroup.c | 9 +- src/qemu/qemu_command.c | 395 ++++++++++++++++++++++++++++++++---= ---- src/qemu/qemu_domain.c | 197 ++++++++++++++----- src/qemu/qemu_domain_address.c | 46 ++++- src/qemu/qemu_driver.c | 109 +++++++++-- src/qemu/qemu_hostdev.c | 5 +- src/qemu/qemu_hotplug.c | 58 +++++- src/qemu/qemu_interface.c | 12 +- src/qemu/qemu_migration.c | 24 ++- src/qemu/qemu_migration_cookie.c | 6 +- src/qemu/qemu_monitor.c | 13 +- src/qemu/qemu_monitor_json.c | 67 +++++-- src/qemu/qemu_monitor_text.c | 3 + src/qemu/qemu_parse_command.c | 12 +- src/qemu/qemu_process.c | 108 ++++++++++- 20 files changed, 918 insertions(+), 197 deletions(-) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 87a9c85f09..6a9e109855 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -198,6 +198,8 @@ virDomainBootTypeFromString; virDomainBootTypeToString; virDomainCapabilitiesPolicyTypeToString; virDomainCapsFeatureTypeToString; +virDomainChrChannelTargetTypeFromString; +virDomainChrChannelTargetTypeToString; virDomainChrConsoleTargetTypeFromString; virDomainChrConsoleTargetTypeToString; virDomainChrDefForeach; diff --git a/src/qemu/qemu_alias.c b/src/qemu/qemu_alias.c index ae30f7df82..834cc4a319 100644 --- a/src/qemu/qemu_alias.c +++ b/src/qemu/qemu_alias.c @@ -110,6 +110,9 @@ qemuAssignDeviceChrAlias(virDomainDefPtr def, break; =20 case VIR_DOMAIN_CHR_DEVICE_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected chardev device type %d"), chr->device= Type); return -1; } =20 diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c index 585f0255ee..13fcd5a6a8 100644 --- a/src/qemu/qemu_block.c +++ b/src/qemu/qemu_block.c @@ -515,11 +515,17 @@ qemuBlockStorageSourceBuildJSONSocketAddress(virStora= geNetHostDefPtr host, break; =20 case VIR_STORAGE_NET_HOST_TRANS_RDMA: - case VIR_STORAGE_NET_HOST_TRANS_LAST: virReportError(VIR_ERR_INTERNAL_ERROR, _("transport protocol '%s' is not yet supported"), virStorageNetHostTransportTypeToString(host->transp= ort)); goto cleanup; + + case VIR_STORAGE_NET_HOST_TRANS_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected storage transport %d"), + host->transport); + goto cleanup; } =20 VIR_STEAL_PTR(ret, server); @@ -1005,7 +1011,9 @@ qemuBlockStorageSourceGetBackendProps(virStorageSourc= ePtr src) =20 case VIR_STORAGE_TYPE_VOLUME: case VIR_STORAGE_TYPE_NONE: - case VIR_STORAGE_TYPE_LAST: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Unsupported storage type %s"), + virStorageTypeToString(actualType)); return NULL; =20 case VIR_STORAGE_TYPE_NETWORK: @@ -1056,9 +1064,19 @@ qemuBlockStorageSourceGetBackendProps(virStorageSour= cePtr src) =20 case VIR_STORAGE_NET_PROTOCOL_NONE: case VIR_STORAGE_NET_PROTOCOL_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected storage protocol %d"), + src->protocol); return NULL; } break; + + case VIR_STORAGE_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected storage type %d"), actualType); + return NULL; } =20 if (virJSONValueObjectAdd(fileprops, "S:node-name", src->nodestorage, = NULL) < 0) { diff --git a/src/qemu/qemu_blockjob.c b/src/qemu/qemu_blockjob.c index 617e4ee564..2a08e09d99 100644 --- a/src/qemu/qemu_blockjob.c +++ b/src/qemu/qemu_blockjob.c @@ -199,6 +199,7 @@ qemuBlockJobEventProcess(virQEMUDriverPtr driver, break; =20 case VIR_DOMAIN_BLOCK_JOB_LAST: + default: break; } =20 diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index b5eb8cf46a..a07bf00ebc 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -2598,9 +2598,12 @@ virQEMUCapsGetHostModel(virQEMUCapsPtr qemuCaps, /* 'full' is non-NULL only if we have data from both QEMU and * virCPUGetHost */ return cpuData->full ? cpuData->full : cpuData->reported; - } =20 - return NULL; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected CPU model type %d"), cpuType); + return NULL; + } } =20 =20 @@ -2643,11 +2646,10 @@ virQEMUCapsIsCPUModeSupported(virQEMUCapsPtr qemuCa= ps, cpus =3D qemuCaps->tcgCPUModels; return cpus && cpus->nmodels > 0; =20 + default: case VIR_CPU_MODE_LAST: - break; + return false; } - - return false; } =20 =20 @@ -3447,7 +3449,10 @@ virQEMUCapsInitCPUModelX86(virQEMUCapsPtr qemuCaps, break; =20 case QEMU_MONITOR_CPU_PROPERTY_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected monitor CPU property type %d"), p= rop->type); + goto cleanup; } } =20 @@ -3705,7 +3710,10 @@ virQEMUCapsLoadHostCPUModelInfo(virQEMUCapsPtr qemuC= aps, break; =20 case QEMU_MONITOR_CPU_PROPERTY_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected monitor CPU property type %d"= ), prop->type); + goto cleanup; } =20 if ((str =3D virXMLPropString(ctxt->node, "migratable"))) { @@ -4161,6 +4169,7 @@ virQEMUCapsFormatHostCPUModelInfo(virQEMUCapsPtr qemu= Caps, break; =20 case QEMU_MONITOR_CPU_PROPERTY_LAST: + default: break; } =20 diff --git a/src/qemu/qemu_cgroup.c b/src/qemu/qemu_cgroup.c index b604edb31c..6c32303c18 100644 --- a/src/qemu/qemu_cgroup.c +++ b/src/qemu/qemu_cgroup.c @@ -239,7 +239,10 @@ qemuSetupTPMCgroup(virDomainObjPtr vm) ret =3D qemuSetupChrSourceCgroup(vm, &dev->data.passthrough.source= ); break; case VIR_DOMAIN_TPM_TYPE_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected TPM type %d"), dev->type); + return -1; } =20 return ret; @@ -263,6 +266,8 @@ qemuSetupInputCgroup(virDomainObjPtr vm, VIR_CGROUP_DEVICE_RW, false); virDomainAuditCgroupPath(vm, priv->cgroup, "allow", dev->source.ev= dev, "rw", ret); break; + default: + break; } =20 return ret; @@ -286,6 +291,8 @@ qemuTeardownInputCgroup(virDomainObjPtr vm, VIR_CGROUP_DEVICE_RWM, false); virDomainAuditCgroupPath(vm, priv->cgroup, "deny", dev->source.evd= ev, "rwm", ret); break; + default: + break; } =20 return ret; diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 33ca1e0960..71e697dd41 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -642,7 +642,13 @@ qemuBuildGeneralSecinfoURI(virURIPtr uri, break; =20 case VIR_DOMAIN_SECRET_INFO_TYPE_AES: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("Unsupported secret info type aes")); + return -1; case VIR_DOMAIN_SECRET_INFO_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected secret info type %d"), secinfo->type); return -1; } =20 @@ -690,6 +696,9 @@ qemuBuildRBDSecinfoURI(virBufferPtr buf, break; =20 case VIR_DOMAIN_SECRET_INFO_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected secret info type %d"), secinfo->type); return -1; } =20 @@ -1013,9 +1022,9 @@ qemuBuildNetworkDriveStr(virStorageSourcePtr src, =20 case VIR_STORAGE_NET_PROTOCOL_LAST: case VIR_STORAGE_NET_PROTOCOL_NONE: + default: virReportError(VIR_ERR_INTERNAL_ERROR, - _("Unexpected network protocol '%s'"), - virStorageNetProtocolTypeToString(src->protocol= )); + _("Unexpected network protocol %d"), src->proto= col); goto cleanup; } =20 @@ -1056,8 +1065,12 @@ qemuGetDriveSourceString(virStorageSourcePtr src, =20 case VIR_STORAGE_TYPE_VOLUME: case VIR_STORAGE_TYPE_NONE: - case VIR_STORAGE_TYPE_LAST: break; + case VIR_STORAGE_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected storage type %d"), actualType); + goto cleanup; } =20 ret =3D 0; @@ -1259,7 +1272,7 @@ qemuCheckDiskConfig(virDomainDiskDefPtr disk, } } =20 - switch (disk->bus) { + switch ((virDomainDiskBus)disk->bus) { case VIR_DOMAIN_DISK_BUS_SCSI: if (disk->info.type !=3D VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DRIVE) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", @@ -1319,7 +1332,14 @@ qemuCheckDiskConfig(virDomainDiskDefPtr disk, case VIR_DOMAIN_DISK_BUS_VIRTIO: case VIR_DOMAIN_DISK_BUS_XEN: case VIR_DOMAIN_DISK_BUS_SD: + case VIR_DOMAIN_DISK_BUS_USB: + case VIR_DOMAIN_DISK_BUS_UML: + case VIR_DOMAIN_DISK_BUS_SATA: break; + case VIR_DOMAIN_DISK_BUS_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected disk bus %d"), disk->bus); } =20 if (disk->src->readonly && @@ -1868,11 +1888,15 @@ qemuCheckIOThreads(const virDomainDef *def, case VIR_DOMAIN_DISK_BUS_UML: case VIR_DOMAIN_DISK_BUS_SATA: case VIR_DOMAIN_DISK_BUS_SD: - case VIR_DOMAIN_DISK_BUS_LAST: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("IOThreads not available for bus %s target %s"), virDomainDiskBusTypeToString(disk->bus), disk->dst); return false; + case VIR_DOMAIN_DISK_BUS_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected disk bus %d"), disk->bus); + return false; } =20 /* Can we find the disk iothread in the iothreadid list? */ @@ -2277,7 +2301,7 @@ qemuBuildDiskDriveCommandLine(virCommandPtr cmd, /* bootDevs will get translated into either bootindex=3DN or boot= =3Don * depending on what qemu supports */ for (i =3D 0; i < def->os.nBootDevs; i++) { - switch (def->os.bootDevs[i]) { + switch ((virDomainBootOrder)def->os.bootDevs[i]) { case VIR_DOMAIN_BOOT_CDROM: bootCD =3D i + 1; break; @@ -2287,6 +2311,13 @@ qemuBuildDiskDriveCommandLine(virCommandPtr cmd, case VIR_DOMAIN_BOOT_DISK: bootDisk =3D i + 1; break; + case VIR_DOMAIN_BOOT_NET: + break; + case VIR_DOMAIN_BOOT_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected disk boot device %d"), def->o= s.bootDevs[i]); + return -1; } } } @@ -2308,7 +2339,7 @@ qemuBuildDiskDriveCommandLine(virCommandPtr cmd, if (disk->info.bootIndex) { bootindex =3D disk->info.bootIndex; } else { - switch (disk->device) { + switch ((virDomainDiskDevice)disk->device) { case VIR_DOMAIN_DISK_DEVICE_CDROM: bootindex =3D bootCD; bootCD =3D 0; @@ -2322,6 +2353,11 @@ qemuBuildDiskDriveCommandLine(virCommandPtr cmd, bootindex =3D bootDisk; bootDisk =3D 0; break; + case VIR_DOMAIN_DISK_DEVICE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected disk device type %d"), disk->= device); + return -1; } if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_BOOTINDEX)) { driveBoot =3D !!bootindex; @@ -2677,6 +2713,7 @@ qemuBuildControllerDevStr(const virDomainDef *domainD= ef, goto error; case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_DEFAULT: case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST: + default: virReportError(VIR_ERR_INTERNAL_ERROR, _("Unexpected SCSI controller model %d"), def->model); @@ -2782,6 +2819,7 @@ qemuBuildControllerDevStr(const virDomainDef *domainD= ef, goto error; case VIR_DOMAIN_CONTROLLER_MODEL_PCI_DEFAULT: case VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST: + default: virReportError(VIR_ERR_INTERNAL_ERROR, _("Unexpected PCI controller model %d"), def->model); @@ -2791,11 +2829,15 @@ qemuBuildControllerDevStr(const virDomainDef *domai= nDef, =20 case VIR_DOMAIN_CONTROLLER_TYPE_IDE: case VIR_DOMAIN_CONTROLLER_TYPE_FDC: - case VIR_DOMAIN_CONTROLLER_TYPE_LAST: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Unsupported controller type: %s"), virDomainControllerTypeToString(def->type)); goto error; + case VIR_DOMAIN_CONTROLLER_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected controller type %d"), def->type); + goto error; } =20 if (def->queues) @@ -3146,8 +3188,12 @@ qemuBuildMemoryBackendStr(virJSONValuePtr *backendPr= ops, break; =20 case VIR_DOMAIN_MEMORY_ACCESS_DEFAULT: - case VIR_DOMAIN_MEMORY_ACCESS_LAST: break; + case VIR_DOMAIN_MEMORY_ACCESS_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected memory access mode %d"), memAcces= s); + goto cleanup; } } else { *backendType =3D "memory-backend-ram"; @@ -3329,9 +3375,13 @@ qemuBuildMemoryDeviceStr(virDomainMemoryDefPtr mem) break; =20 case VIR_DOMAIN_MEMORY_MODEL_NONE: - case VIR_DOMAIN_MEMORY_MODEL_LAST: break; =20 + case VIR_DOMAIN_MEMORY_MODEL_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected memory model %d"), mem->model); + return NULL; } =20 if (virBufferCheckError(&buf) < 0) @@ -3664,8 +3714,12 @@ qemuBuildHostNetStr(virDomainNetDefPtr net, =20 case VIR_DOMAIN_NET_TYPE_HOSTDEV: /* Should have been handled earlier via PCI/USB hotplug code. */ - case VIR_DOMAIN_NET_TYPE_LAST: break; + case VIR_DOMAIN_NET_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected net type %d"), netType); + goto cleanup; } =20 if (vlan >=3D 0) { @@ -3959,7 +4013,10 @@ qemuBuildVirtioInputDevStr(const virDomainDef *def, virQEMUBuildBufferEscapeComma(&buf, dev->source.evdev); break; case VIR_DOMAIN_INPUT_TYPE_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected input type %d"), dev->type); + goto error; } =20 if (qemuBuildDeviceAddressStr(&buf, def, &dev->info, qemuCaps) < 0) @@ -3985,7 +4042,7 @@ qemuBuildUSBInputDevStr(const virDomainDef *def, { virBuffer buf =3D VIR_BUFFER_INITIALIZER; =20 - switch (dev->type) { + switch ((virDomainInputType)dev->type) { case VIR_DOMAIN_INPUT_TYPE_MOUSE: virBufferAsprintf(&buf, "usb-mouse,id=3D%s", dev->info.alias); break; @@ -4001,6 +4058,16 @@ qemuBuildUSBInputDevStr(const virDomainDef *def, } virBufferAsprintf(&buf, "usb-kbd,id=3D%s", dev->info.alias); break; + case VIR_DOMAIN_INPUT_TYPE_PASSTHROUGH: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Unsupported input type %s"), + virDomainInputTypeToString(dev->type)); + goto error; + case VIR_DOMAIN_INPUT_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected input type %d"), dev->type); + goto error; } =20 if (qemuBuildDeviceAddressStr(&buf, def, &dev->info, qemuCaps) < 0) @@ -4023,7 +4090,7 @@ qemuBuildInputDevStr(char **devstr, virDomainInputDefPtr input, virQEMUCapsPtr qemuCaps) { - switch (input->bus) { + switch ((virDomainInputBus)input->bus) { case VIR_DOMAIN_INPUT_BUS_USB: if (!(*devstr =3D qemuBuildUSBInputDevStr(def, input, qemuCaps))) return -1; @@ -4033,6 +4100,21 @@ qemuBuildInputDevStr(char **devstr, if (!(*devstr =3D qemuBuildVirtioInputDevStr(def, input, qemuCaps)= )) return -1; break; + + case VIR_DOMAIN_INPUT_BUS_PS2: + /* nada */ + break; + case VIR_DOMAIN_INPUT_BUS_XEN: + case VIR_DOMAIN_INPUT_BUS_PARALLELS: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Unsupported input bus %s"), + virDomainInputBusTypeToString(input->bus)); + return -1; + case VIR_DOMAIN_INPUT_BUS_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected input bus %d"), input->bus); + return -1; } return 0; } @@ -4105,11 +4187,15 @@ qemuBuildSoundDevStr(const virDomainDef *def, model =3D "sb16"; break; case VIR_DOMAIN_SOUND_MODEL_PCSPK: /* pc-speaker is handled separately= */ - case VIR_DOMAIN_SOUND_MODEL_LAST: - virReportError(VIR_ERR_INTERNAL_ERROR, + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("sound card model '%s' is not supported by qemu"), virDomainSoundModelTypeToString(sound->model)); goto error; + case VIR_DOMAIN_SOUND_MODEL_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected sound model %d"), sound->model); + goto error; } =20 virBufferAsprintf(&buf, "%s,id=3D%s", model, sound->info.alias); @@ -4488,11 +4574,15 @@ qemuBuildPCIHostdevDevStr(const virDomainDef *def, =20 case VIR_DOMAIN_HOSTDEV_PCI_BACKEND_DEFAULT: case VIR_DOMAIN_HOSTDEV_PCI_BACKEND_XEN: - case VIR_DOMAIN_HOSTDEV_PCI_BACKEND_TYPE_LAST: virReportError(VIR_ERR_INTERNAL_ERROR, _("invalid PCI passthrough type '%s'"), virDomainHostdevSubsysPCIBackendTypeToString(backen= d)); goto error; + case VIR_DOMAIN_HOSTDEV_PCI_BACKEND_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected hostdev PCI backend %d"), backend); + goto error; } =20 virBufferAddLit(&buf, ",host=3D"); @@ -5432,13 +5522,30 @@ qemuBuildSclpDevStr(virDomainChrDefPtr dev) { virBuffer buf =3D VIR_BUFFER_INITIALIZER; if (dev->deviceType =3D=3D VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE) { - switch (dev->targetType) { + switch ((virDomainChrConsoleTargetType)dev->targetType) { case VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SCLP: virBufferAddLit(&buf, "sclpconsole"); break; case VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SCLPLM: virBufferAddLit(&buf, "sclplmconsole"); break; + case VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_NONE: + case VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SERIAL: + case VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_XEN: + case VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_UML: + case VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_VIRTIO: + case VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_LXC: + case VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_OPENVZ: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Unsupported console target type %s"), + virDomainChrConsoleTargetTypeToString(dev->targ= etType)); + goto error; + case VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected console target type %d"), + dev->targetType); + goto error; } } else { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", @@ -5472,7 +5579,6 @@ qemuBuildRNGBackendChrdevStr(virLogManagerPtr logMana= ger, =20 switch ((virDomainRNGBackend) rng->backend) { case VIR_DOMAIN_RNG_BACKEND_RANDOM: - case VIR_DOMAIN_RNG_BACKEND_LAST: /* no chardev backend is needed */ return 0; =20 @@ -5482,6 +5588,12 @@ qemuBuildRNGBackendChrdevStr(virLogManagerPtr logMan= ager, rng->info.alias, qemuCaps, tru= e, chardevStdioLogd))) return -1; + break; + case VIR_DOMAIN_RNG_BACKEND_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected RNG backend %d"), rng->backend); + return -1; } =20 return 0; @@ -5533,8 +5645,9 @@ qemuBuildRNGBackendProps(virDomainRNGDefPtr rng, break; =20 case VIR_DOMAIN_RNG_BACKEND_LAST: - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("unknown rng-random backend")); + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected RNG backend %d"), rng->backend); goto cleanup; } =20 @@ -6028,6 +6141,11 @@ qemuBuildClockArgStr(virDomainClockDefPtr def) case VIR_DOMAIN_TIMER_TRACK_WALL: virBufferAddLit(&buf, ",clock=3Dhost"); break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected timer tracking mode %d"), + def->timers[i]->track); + goto error; } =20 switch (def->timers[i]->tickpolicy) { @@ -6046,6 +6164,11 @@ qemuBuildClockArgStr(virDomainClockDefPtr def) _("unsupported rtc timer tickpolicy '%s'"), virDomainTimerTickpolicyTypeToString(def->t= imers[i]->tickpolicy)); goto error; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected timer tick policy %d"), + def->timers[i]->tickpolicy); + goto error; } break; /* no need to check other timers - there is only one rt= c */ } @@ -6115,7 +6238,6 @@ qemuBuildClockCommandLine(virCommandPtr cmd, case VIR_DOMAIN_TIMER_NAME_KVMCLOCK: case VIR_DOMAIN_TIMER_NAME_HYPERVCLOCK: /* Timers above are handled when building -cpu. */ - case VIR_DOMAIN_TIMER_NAME_LAST: break; =20 case VIR_DOMAIN_TIMER_NAME_RTC: @@ -6137,6 +6259,11 @@ qemuBuildClockCommandLine(virCommandPtr cmd, _("unsupported rtc tickpolicy '%s'"), virDomainTimerTickpolicyTypeToString(de= f->clock.timers[i]->tickpolicy)); return -1; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected timer tick policy %d"), + def->clock.timers[i]->tickpolicy); + return -1; } } else if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_RTC) && (def->clock.timers[i]->tickpolicy @@ -6191,6 +6318,11 @@ qemuBuildClockCommandLine(virCommandPtr cmd, _("unsupported pit tickpolicy '%s'"), virDomainTimerTickpolicyTypeToString(def->c= lock.timers[i]->tickpolicy)); return -1; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected timer tick policy %d"), + def->clock.timers[i]->tickpolicy); + return -1; } break; =20 @@ -6215,6 +6347,12 @@ qemuBuildClockCommandLine(virCommandPtr cmd, } } break; + case VIR_DOMAIN_TIMER_NAME_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected timer name %d"), + def->clock.timers[i]->name); + return -1; } } =20 @@ -6480,7 +6618,11 @@ qemuBuildIOMMUCommandLine(virCommandPtr cmd, } break; case VIR_DOMAIN_IOMMU_MODEL_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unsupported iommu model %d"), + iommu->model); + return -1; } =20 if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_MACHINE_IOMMU)) @@ -6519,13 +6661,19 @@ qemuBuildIOMMUCommandLine(virCommandPtr cmd, virBufferAsprintf(&opts, ",device-iotlb=3D%s", virTristateSwitchTypeToString(iommu->iotlb)); } - case VIR_DOMAIN_IOMMU_MODEL_LAST: break; + case VIR_DOMAIN_IOMMU_MODEL_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unsupported iommu model %d"), + iommu->model); + goto cleanup; } virCommandAddArg(cmd, "-device"); virCommandAddArgBuffer(cmd, &opts); =20 ret =3D 0; + cleanup: virBufferFreeAndReset(&opts); return ret; } @@ -6641,7 +6789,11 @@ qemuBuildCpuModelArgStr(virQEMUDriverPtr driver, break; =20 case VIR_CPU_MODE_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected CPU mode %d"), + cpu->mode); + goto cleanup; } =20 if (ARCH_IS_S390(def->os.arch) && cpu->features && @@ -6674,8 +6826,13 @@ qemuBuildCpuModelArgStr(virQEMUDriverPtr driver, break; =20 case VIR_CPU_FEATURE_OPTIONAL: - case VIR_CPU_FEATURE_LAST: break; + case VIR_CPU_FEATURE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected CPU feature policy %d"), + cpu->features[i].policy); + goto cleanup; } } =20 @@ -6811,6 +6968,7 @@ qemuBuildCpuCommandLine(virCommandPtr cmd, =20 /* coverity[dead_error_begin] */ case VIR_DOMAIN_HYPERV_LAST: + default: break; } } @@ -6833,6 +6991,7 @@ qemuBuildCpuCommandLine(virCommandPtr cmd, =20 /* coverity[dead_error_begin] */ case VIR_DOMAIN_KVM_LAST: + default: break; } } @@ -6865,7 +7024,11 @@ qemuBuildCpuCommandLine(virCommandPtr cmd, break; =20 case VIR_CPU_CACHE_MODE_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected CPU cache mode %d"), + cache->mode); + goto cleanup; } =20 if (hostOff && @@ -7226,12 +7389,16 @@ qemuBuildMachineCommandLine(virCommandPtr cmd, _("IOMMU device: '%s' is only supported= with " "Q35 machines"), virDomainIOMMUModelTypeToString(def->io= mmu->model)); - return -1; + goto cleanup; } virBufferAddLit(&buf, ",iommu=3Don"); break; case VIR_DOMAIN_IOMMU_MODEL_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected iommu model %d"), + def->iommu->model); + goto cleanup; } } =20 @@ -7268,7 +7435,11 @@ qemuBuildMachineCommandLine(virCommandPtr cmd, virBufferAddLit(&buf, ",kernel_irqchip=3Don"); break; case VIR_DOMAIN_IOAPIC_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected ioapic type %d"), + def->ioapic); + goto cleanup; } } =20 @@ -7757,7 +7928,11 @@ qemuBuildGraphicsVNCCommandLine(virQEMUDriverConfigP= tr cfg, break; =20 case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected graphics listen type %d"), + glisten->type); + goto error; } =20 if (graphics->data.vnc.sharePolicy) { @@ -7888,7 +8063,11 @@ qemuBuildGraphicsSPICECommandLine(virQEMUDriverConfi= gPtr cfg, hasInsecure =3D true; break; case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected graphics listen type %d"), + glisten->type); + goto error; } =20 if (cfg->spiceSASL) { @@ -7952,9 +8131,14 @@ qemuBuildGraphicsSPICECommandLine(virQEMUDriverConfi= gPtr cfg, virBufferAddLit(&opt, "plaintext-channel=3Ddefault,"); break; case VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_MODE_ANY: - case VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_MODE_LAST: /* nothing */ break; + case VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_MODE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected spice channel mode %d"), + graphics->data.spice.defaultMode); + goto error; } =20 for (i =3D 0; i < VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_LAST; i++) { @@ -7985,6 +8169,12 @@ qemuBuildGraphicsSPICECommandLine(virQEMUDriverConfi= gPtr cfg, =20 case VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_MODE_ANY: break; + case VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_MODE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected spice channel mode %d"), + graphics->data.spice.channels[i]); + goto error; } } =20 @@ -8110,11 +8300,15 @@ qemuBuildGraphicsCommandLine(virQEMUDriverConfigPtr= cfg, =20 case VIR_DOMAIN_GRAPHICS_TYPE_RDP: case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP: - case VIR_DOMAIN_GRAPHICS_TYPE_LAST: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("unsupported graphics type '%s'"), virDomainGraphicsTypeToString(graphics->type)); return -1; + case VIR_DOMAIN_GRAPHICS_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected graphics type %d"), graphics->type); + return -1; } =20 return 0; @@ -8163,11 +8357,16 @@ qemuBuildVhostuserCommandLine(virQEMUDriverPtr driv= er, case VIR_DOMAIN_CHR_TYPE_SPICEVMC: case VIR_DOMAIN_CHR_TYPE_SPICEPORT: case VIR_DOMAIN_CHR_TYPE_NMDM: - case VIR_DOMAIN_CHR_TYPE_LAST: - virReportError(VIR_ERR_INTERNAL_ERROR, + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("vhost-user type '%s' not supported"), virDomainChrTypeToString(net->data.vhostuser->type)= ); goto error; + case VIR_DOMAIN_CHR_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected chardev type %d"), + net->data.vhostuser->type); + goto error; } =20 if (queues > 1 && @@ -8349,14 +8548,12 @@ qemuBuildInterfaceCommandLine(virQEMUDriverPtr driv= er, */ ret =3D 0; goto cleanup; - break; =20 case VIR_DOMAIN_NET_TYPE_VHOSTUSER: ret =3D qemuBuildVhostuserCommandLine(driver, logManager, cmd, def, net, qemuCaps, bootindex, chardevStdioLogd); goto cleanup; - break; =20 case VIR_DOMAIN_NET_TYPE_USER: case VIR_DOMAIN_NET_TYPE_SERVER: @@ -8364,9 +8561,13 @@ qemuBuildInterfaceCommandLine(virQEMUDriverPtr drive= r, case VIR_DOMAIN_NET_TYPE_MCAST: case VIR_DOMAIN_NET_TYPE_INTERNAL: case VIR_DOMAIN_NET_TYPE_UDP: - case VIR_DOMAIN_NET_TYPE_LAST: /* nada */ break; + case VIR_DOMAIN_NET_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected net type %d"), actualType); + goto cleanup; } =20 /* For types whose implementations use a netdev on the host, add @@ -8400,7 +8601,6 @@ qemuBuildInterfaceCommandLine(virQEMUDriverPtr driver, case VIR_DOMAIN_NET_TYPE_UDP: case VIR_DOMAIN_NET_TYPE_INTERNAL: case VIR_DOMAIN_NET_TYPE_HOSTDEV: - case VIR_DOMAIN_NET_TYPE_LAST: /* These types don't use a network device on the host, but * instead use some other type of connection to the emulated * device in the qemu process. @@ -8411,7 +8611,12 @@ qemuBuildInterfaceCommandLine(virQEMUDriverPtr drive= r, * up in the list of interfaces on the host - it's just some * PCI device.) */ - break; + break; + case VIR_DOMAIN_NET_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected net type %d"), actualType); + goto cleanup; } =20 /* Set bandwidth or warn if requested and not supported. */ @@ -8926,7 +9131,10 @@ qemuBuildShmemCommandLine(virLogManagerPtr logManage= r, break; =20 case VIR_DOMAIN_SHMEM_MODEL_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected shmem model %d"), shmem->model); + return -1; } =20 if (!devstr) @@ -8970,10 +9178,9 @@ qemuChrSerialTargetModelToCaps(virDomainChrSerialTar= getModel targetModel) return QEMU_CAPS_DEVICE_PL011; case VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_NONE: case VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_LAST: - break; + default: + return 0; } - - return 0; } =20 =20 @@ -9127,7 +9334,7 @@ qemuBuildChannelsCommandLine(virLogManagerPtr logMana= ger, virDomainChrDefPtr channel =3D def->channels[i]; char *devstr; =20 - switch (channel->targetType) { + switch ((virDomainChrChannelTargetType)channel->targetType) { case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_GUESTFWD: if (!(devstr =3D qemuBuildChrChardevStr(logManager, cmd, cfg, = def, channel->source, @@ -9167,6 +9374,19 @@ qemuBuildChannelsCommandLine(virLogManagerPtr logMan= ager, if (qemuBuildChrDeviceCommandLine(cmd, def, channel, qemuCaps)= < 0) return -1; break; + + case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_NONE: + case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_XEN: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Unsupported channel target type %s"), + virDomainChrChannelTargetTypeToString(channel->= targetType)); + return -1; + + case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected channel target type %d"), channel= ->targetType); + return -1; } } =20 @@ -9387,7 +9607,7 @@ qemuBuildRedirdevCommandLine(virLogManagerPtr logMana= ger, } =20 =20 -static void +static int qemuBuildDomainLoaderCommandLine(virCommandPtr cmd, virDomainDefPtr def) { @@ -9396,7 +9616,7 @@ qemuBuildDomainLoaderCommandLine(virCommandPtr cmd, int unit =3D 0; =20 if (!loader) - return; + return 0; =20 switch ((virDomainLoader) loader->type) { case VIR_DOMAIN_LOADER_TYPE_ROM: @@ -9438,11 +9658,14 @@ qemuBuildDomainLoaderCommandLine(virCommandPtr cmd, break; =20 case VIR_DOMAIN_LOADER_TYPE_LAST: - /* nada */ - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected loader type %d"), loader->type); + return -1; } =20 virBufferFreeAndReset(&buf); + return 0; } =20 =20 @@ -9496,8 +9719,13 @@ qemuBuildTPMBackendStr(const virDomainDef *def, =20 switch (tpm->type) { case VIR_DOMAIN_TPM_TYPE_PASSTHROUGH: - if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_TPM_PASSTHROUGH)) - goto no_support; + if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_TPM_PASSTHROUGH)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("The QEMU executable %s does not support TPM " + "backend type %s"), + def->emulator, type); + goto error; + } =20 tpmdev =3D tpm->data.passthrough.source.data.file.path; if (!(cancel_path =3D virTPMCreateCancelPath(tpmdev))) @@ -9543,6 +9771,9 @@ qemuBuildTPMBackendStr(const virDomainDef *def, =20 break; case VIR_DOMAIN_TPM_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected TPM type %d"), tpm->type); goto error; } =20 @@ -9551,12 +9782,6 @@ qemuBuildTPMBackendStr(const virDomainDef *def, =20 return virBufferContentAndReset(&buf); =20 - no_support: - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("The QEMU executable %s does not support TPM " - "backend type %s"), - def->emulator, type); - error: VIR_FREE(devset); VIR_FREE(cancel_path); @@ -9730,8 +9955,13 @@ qemuBuildPanicCommandLine(virCommandPtr cmd, =20 /* default model value was changed before in post parse */ case VIR_DOMAIN_PANIC_MODEL_DEFAULT: - case VIR_DOMAIN_PANIC_MODEL_LAST: break; + case VIR_DOMAIN_PANIC_MODEL_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected panic model %d"), + def->panics[i]->model); + return -1; } } =20 @@ -9787,7 +10017,7 @@ qemuBuildCommandLineValidate(virQEMUDriverPtr driver, } =20 for (i =3D 0; i < def->ngraphics; ++i) { - switch (def->graphics[i]->type) { + switch ((virDomainGraphicsType)def->graphics[i]->type) { case VIR_DOMAIN_GRAPHICS_TYPE_SDL: ++sdl; break; @@ -9799,8 +10029,16 @@ qemuBuildCommandLineValidate(virQEMUDriverPtr drive= r, break; case VIR_DOMAIN_GRAPHICS_TYPE_RDP: case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Unsupported graphics type %s"), + virDomainGraphicsTypeToString(def->graphics[i]-= >type)); + return -1; case VIR_DOMAIN_GRAPHICS_TYPE_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected graphics type %d"), + def->graphics[i]->type); + return -1; } } =20 @@ -9900,7 +10138,8 @@ qemuBuildCommandLine(virQEMUDriverPtr driver, if (qemuBuildCpuCommandLine(cmd, driver, def, qemuCaps) < 0) goto error; =20 - qemuBuildDomainLoaderCommandLine(cmd, def); + if (qemuBuildDomainLoaderCommandLine(cmd, def) < 0) + goto error; =20 if (!migrateURI && !snapshot && qemuDomainAlignMemorySizes(def) < 0) goto error; @@ -10144,14 +10383,18 @@ qemuBuildSerialChrDeviceStr(char **deviceStr, =20 case VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_PL011: case VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_NONE: - case VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_LAST: - /* Except from _LAST, which is just a guard value and will never - * be used, all of the above are platform devices, which means + /* All of the above are platform devices, which means * qemuBuildSerialCommandLine() will have taken the appropriate * branch and we will not have ended up here. */ virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Invalid target model for serial device")); goto error; + case VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected serial target model %d"), + serial->targetModel); + goto error; } =20 virBufferAsprintf(&cmd, "%s,chardev=3Dchar%s,id=3D%s", @@ -10213,8 +10456,16 @@ qemuBuildChannelChrDeviceStr(char **deviceStr, =20 case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_XEN: case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_NONE: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("unsupported channel target type %s"), + virDomainChrChannelTargetTypeToString(chr->targetTy= pe)); + goto cleanup; case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_LAST: - return ret; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected channel target type %d"), + chr->targetType); + goto cleanup; } =20 ret =3D 0; @@ -10251,10 +10502,15 @@ qemuBuildConsoleChrDeviceStr(char **deviceStr, case VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_UML: case VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_LXC: case VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_OPENVZ: - case VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_LAST: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("unsupported console target type %s"), - NULLSTR(virDomainChrConsoleTargetTypeToString(chr->= targetType))); + virDomainChrConsoleTargetTypeToString(chr->targetTy= pe)); + goto cleanup; + case VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected console target type %d"), + chr->targetType); goto cleanup; } =20 @@ -10289,6 +10545,9 @@ qemuBuildChrDeviceStr(char **deviceStr, break; =20 case VIR_DOMAIN_CHR_DEVICE_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected chardev device type %d"), chr->device= Type); return ret; } =20 diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 7697de69e4..28aba63fb3 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -175,9 +175,9 @@ qemuDomainAsyncJobPhaseToString(qemuDomainAsyncJob job, case QEMU_ASYNC_JOB_NONE: case QEMU_ASYNC_JOB_LAST: ATTRIBUTE_FALLTHROUGH; + default: + return "none"; } - - return "none"; } =20 int @@ -199,12 +199,12 @@ qemuDomainAsyncJobPhaseFromString(qemuDomainAsyncJob = job, case QEMU_ASYNC_JOB_NONE: case QEMU_ASYNC_JOB_LAST: ATTRIBUTE_FALLTHROUGH; + default: + if (STREQ(phase, "none")) + return 0; + else + return -1; } - - if (STREQ(phase, "none")) - return 0; - else - return -1; } =20 =20 @@ -416,9 +416,6 @@ static virDomainJobType qemuDomainJobStatusToType(qemuDomainJobStatus status) { switch (status) { - case QEMU_DOMAIN_JOB_STATUS_NONE: - break; - case QEMU_DOMAIN_JOB_STATUS_ACTIVE: case QEMU_DOMAIN_JOB_STATUS_MIGRATING: case QEMU_DOMAIN_JOB_STATUS_QEMU_COMPLETED: @@ -434,9 +431,11 @@ qemuDomainJobStatusToType(qemuDomainJobStatus status) =20 case QEMU_DOMAIN_JOB_STATUS_CANCELED: return VIR_DOMAIN_JOB_CANCELLED; - } =20 - return VIR_DOMAIN_JOB_NONE; + case QEMU_DOMAIN_JOB_STATUS_NONE: + default: + return VIR_DOMAIN_JOB_NONE; + } } =20 int @@ -473,6 +472,7 @@ qemuDomainJobInfoToInfo(qemuDomainJobInfoPtr jobInfo, break; =20 case QEMU_DOMAIN_JOB_STATS_TYPE_NONE: + default: break; } =20 @@ -716,10 +716,12 @@ qemuDomainJobInfoToParams(qemuDomainJobInfoPtr jobInf= o, return qemuDomainDumpJobInfoToParams(jobInfo, type, params, nparam= s); =20 case QEMU_DOMAIN_JOB_STATS_TYPE_NONE: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected job stats type %d"), jobInfo->statsTy= pe); + return -1; } =20 - return -1; } =20 =20 @@ -973,6 +975,7 @@ qemuDomainSecretInfoFree(qemuDomainSecretInfoPtr *secin= fo) break; =20 case VIR_DOMAIN_SECRET_INFO_TYPE_LAST: + default: break; } =20 @@ -3186,7 +3189,10 @@ qemuDomainDefCPUPostParse(virDomainDefPtr def) break; =20 case VIR_CPU_CACHE_MODE_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected CPU cache mode %d"), cache->mode); + return -1; } } =20 @@ -3216,7 +3222,10 @@ qemuDomainDefCPUPostParse(virDomainDefPtr def) break; =20 case VIR_CPU_MODE_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected CPU mode %d"), def->cpu->mode); + return -1; } =20 return 0; @@ -3498,6 +3507,7 @@ qemuDomainNetSupportsCoalesce(virDomainNetType type) case VIR_DOMAIN_NET_TYPE_INTERNAL: case VIR_DOMAIN_NET_TYPE_UDP: case VIR_DOMAIN_NET_TYPE_LAST: + default: break; } return false; @@ -3544,6 +3554,7 @@ qemuDomainChrSourceDefValidate(const virDomainChrSour= ceDef *def) case VIR_DOMAIN_CHR_TYPE_SPICEPORT: case VIR_DOMAIN_CHR_TYPE_NMDM: case VIR_DOMAIN_CHR_TYPE_LAST: + default: break; } =20 @@ -3567,10 +3578,9 @@ qemuDomainChrSerialTargetTypeToAddressType(int targe= tType) case VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_SCLP: case VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_LAST: case VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_NONE: - break; + default: + return VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE; } - - return VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE; } =20 =20 @@ -3593,10 +3603,9 @@ qemuDomainChrSerialTargetModelToTargetType(int targe= tModel) return VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_SCLP; case VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_NONE: case VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_LAST: - break; + default: + return VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_NONE; } - - return VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_NONE; } =20 =20 @@ -3639,8 +3648,12 @@ qemuDomainChrTargetDefValidate(const virDomainChrDef= *chr) break; =20 case VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_NONE: - case VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_LAST: break; + case VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected serial target type %d"), chr->tar= getType); + return -1; } =20 /* Validate target model */ @@ -3665,17 +3678,25 @@ qemuDomainChrTargetDefValidate(const virDomainChrDe= f *chr) break; =20 case VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_NONE: - case VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_LAST: break; + case VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected serial target model %d"), chr->ta= rgetModel); + return -1; } break; =20 case VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE: case VIR_DOMAIN_CHR_DEVICE_TYPE_PARALLEL: case VIR_DOMAIN_CHR_DEVICE_TYPE_CHANNEL: - case VIR_DOMAIN_CHR_DEVICE_TYPE_LAST: /* Nothing to do */ break; + case VIR_DOMAIN_CHR_DEVICE_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected chardev device type %d"), chr->device= Type); + return -1; } =20 return 0; @@ -3809,7 +3830,10 @@ qemuDomainWatchdogDefValidate(const virDomainWatchdo= gDef *dev, break; =20 case VIR_DOMAIN_WATCHDOG_MODEL_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected watchdog model %d"), dev->model); + return -1; } =20 return 0; @@ -3932,11 +3956,12 @@ qemuDomainDeviceDefValidateHostdev(const virDomainH= ostdevDef *hostdev, static int qemuDomainDeviceDefValidateVideo(const virDomainVideoDef *video) { - switch (video->type) { + switch ((virDomainVideoType)video->type) { case VIR_DOMAIN_VIDEO_TYPE_XEN: case VIR_DOMAIN_VIDEO_TYPE_VBOX: case VIR_DOMAIN_VIDEO_TYPE_PARALLELS: case VIR_DOMAIN_VIDEO_TYPE_DEFAULT: + case VIR_DOMAIN_VIDEO_TYPE_GOP: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("video type '%s' is not supported with QEMU"), virDomainVideoTypeToString(video->type)); @@ -3946,8 +3971,12 @@ qemuDomainDeviceDefValidateVideo(const virDomainVide= oDef *video) case VIR_DOMAIN_VIDEO_TYPE_VMVGA: case VIR_DOMAIN_VIDEO_TYPE_QXL: case VIR_DOMAIN_VIDEO_TYPE_VIRTIO: - case VIR_DOMAIN_VIDEO_TYPE_LAST: break; + case VIR_DOMAIN_VIDEO_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected video type %d"), video->type); + return -1; } =20 if (!video->primary && @@ -4125,6 +4154,7 @@ qemuDomainCheckSCSIControllerModel(virQEMUCapsPtr qem= uCaps, return false; case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_DEFAULT: case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST: + default: virReportError(VIR_ERR_INTERNAL_ERROR, _("Unexpected SCSI controller model %d"), model); @@ -4216,8 +4246,12 @@ qemuDomainDeviceDefValidateControllerSCSI(const virD= omainControllerDef *controll case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_IBMVSCSI: case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1078: case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_DEFAULT: - case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST: break; + case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected controller SCSI model %d"), contr= oller->model); + return -1; } =20 return 0; @@ -4264,8 +4298,12 @@ qemuDomainDeviceDefValidateControllerPCI(const virDo= mainControllerDef *controlle case VIR_DOMAIN_CONTROLLER_MODEL_PCI_ROOT: case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT: case VIR_DOMAIN_CONTROLLER_MODEL_PCI_DEFAULT: - case VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST: break; + case VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected controller PCI model %d"), model); + return -1; } =20 pciopts =3D &controller->opts.pciopts; @@ -4495,9 +4533,13 @@ qemuDomainDeviceDefValidateControllerPCI(const virDo= mainControllerDef *controlle break; =20 case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT: - case VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST: case VIR_DOMAIN_CONTROLLER_MODEL_PCI_DEFAULT: break; + case VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected controller PCI model %d"), model); + return -1; } =20 return 0; @@ -4563,8 +4605,12 @@ qemuDomainDeviceDefValidateController(const virDomai= nControllerDef *controller, case VIR_DOMAIN_CONTROLLER_TYPE_VIRTIO_SERIAL: case VIR_DOMAIN_CONTROLLER_TYPE_CCID: case VIR_DOMAIN_CONTROLLER_TYPE_USB: - case VIR_DOMAIN_CONTROLLER_TYPE_LAST: break; + case VIR_DOMAIN_CONTROLLER_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected controller type %d"), controller->typ= e); + return -1; } =20 return ret; @@ -4667,8 +4713,12 @@ qemuDomainDeviceDefValidate(const virDomainDeviceDef= *dev, case VIR_DOMAIN_DEVICE_PANIC: case VIR_DOMAIN_DEVICE_IOMMU: case VIR_DOMAIN_DEVICE_NONE: - case VIR_DOMAIN_DEVICE_LAST: break; + case VIR_DOMAIN_DEVICE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected device type %d"), dev->type); + return -1; } =20 virObjectUnref(qemuCaps); @@ -4969,8 +5019,12 @@ qemuDomainControllerDefPostParse(virDomainController= DefPtr cont, case VIR_DOMAIN_CONTROLLER_TYPE_CCID: case VIR_DOMAIN_CONTROLLER_TYPE_IDE: case VIR_DOMAIN_CONTROLLER_TYPE_FDC: - case VIR_DOMAIN_CONTROLLER_TYPE_LAST: break; + case VIR_DOMAIN_CONTROLLER_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected controller type %d"), cont->type); + return -1; } =20 return 0; @@ -5027,9 +5081,12 @@ qemuDomainChrDefPostParse(virDomainChrDefPtr chr, chr->targetModel =3D VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_SCLPCO= NSOLE; break; case VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_NONE: - case VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_LAST: - /* Nothing to do */ break; + case VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected serial target type %d"), chr->tar= getType); + return -1; } } =20 @@ -5951,9 +6008,14 @@ qemuDomainDefFormatBufInternal(virQEMUDriverPtr driv= er, case VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_USB: case VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_SCLP: case VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_NONE: - case VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_LAST: /* Nothing to do */ break; + case VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected serial target type %d"), + serial->targetType); + goto cleanup; } } } @@ -6919,8 +6981,8 @@ qemuDomainCheckDiskStartupPolicy(virQEMUDriverPtr dri= ver, break; =20 case VIR_DOMAIN_STARTUP_POLICY_LAST: - /* this should never happen */ - break; + default: + return -1; } =20 qemuDomainCheckRemoveOptionalDisk(driver, vm, diskIndex); @@ -8117,6 +8179,9 @@ qemuDomainDefValidateMemoryHotplugDevice(const virDom= ainMemoryDef *mem, =20 case VIR_DOMAIN_MEMORY_MODEL_NONE: case VIR_DOMAIN_MEMORY_MODEL_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected memory model %d"), mem->model); return -1; } =20 @@ -8203,8 +8268,12 @@ qemuDomainDefValidateMemoryHotplug(const virDomainDe= f *def, break; =20 case VIR_DOMAIN_MEMORY_MODEL_NONE: - case VIR_DOMAIN_MEMORY_MODEL_LAST: break; + case VIR_DOMAIN_MEMORY_MODEL_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected memory model %d"), def->mems[i]->= model); + return -1; } =20 /* already existing devices don't need to be checked on hotplug */ @@ -8821,9 +8890,9 @@ qemuDomainNetSupportsMTU(virDomainNetType type) case VIR_DOMAIN_NET_TYPE_HOSTDEV: case VIR_DOMAIN_NET_TYPE_UDP: case VIR_DOMAIN_NET_TYPE_LAST: - break; + default: + return false; } - return false; } =20 int @@ -9276,14 +9345,22 @@ qemuDomainGetHostdevPath(virDomainDefPtr def, perm =3D VIR_CGROUP_DEVICE_RW; break; case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected hostdev subsystem type %d"), + dev->source.subsys.type); + goto cleanup; } break; =20 case VIR_DOMAIN_HOSTDEV_MODE_CAPABILITIES: - case VIR_DOMAIN_HOSTDEV_MODE_LAST: /* nada */ break; + case VIR_DOMAIN_HOSTDEV_MODE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected hostdev mode %d"), dev->mode); + goto cleanup; } =20 if (tmpPath) { @@ -9965,8 +10042,10 @@ qemuDomainSetupTPM(virQEMUDriverConfigPtr cfg ATTRI= BUTE_UNUSED, break; =20 case VIR_DOMAIN_TPM_TYPE_LAST: - /* nada */ - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected TPM type %d"), dev->type); + return -1; } =20 VIR_DEBUG("Setup TPM"); @@ -10054,9 +10133,12 @@ qemuDomainSetupRNG(virQEMUDriverConfigPtr cfg ATTR= IBUTE_UNUSED, return -1; =20 case VIR_DOMAIN_RNG_BACKEND_EGD: - case VIR_DOMAIN_RNG_BACKEND_LAST: - /* nada */ break; + case VIR_DOMAIN_RNG_BACKEND_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected RNG backend %d"), rng->backend); + return -1; } =20 return 0; @@ -10110,7 +10192,10 @@ qemuDomainSetupLoader(virQEMUDriverConfigPtr cfg A= TTRIBUTE_UNUSED, break; =20 case VIR_DOMAIN_LOADER_TYPE_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected loader type %d"), loader->type); + goto cleanup; } } =20 @@ -10319,6 +10404,7 @@ qemuDomainNamespaceAvailable(qemuDomainNamespace ns= ATTRIBUTE_UNUSED) # endif break; case QEMU_DOMAIN_NS_LAST: + default: break; } =20 @@ -10988,8 +11074,12 @@ qemuDomainNamespaceSetupRNG(virDomainObjPtr vm, break; =20 case VIR_DOMAIN_RNG_BACKEND_EGD: - case VIR_DOMAIN_RNG_BACKEND_LAST: break; + case VIR_DOMAIN_RNG_BACKEND_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected RNG backend %d"), rng->backend); + return -1; } =20 if (path && qemuDomainNamespaceMknodPath(vm, path) < 0) @@ -11011,8 +11101,12 @@ qemuDomainNamespaceTeardownRNG(virDomainObjPtr vm, break; =20 case VIR_DOMAIN_RNG_BACKEND_EGD: - case VIR_DOMAIN_RNG_BACKEND_LAST: break; + case VIR_DOMAIN_RNG_BACKEND_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected RNG backend %d"), rng->backend); + return -1; } =20 if (path && qemuDomainNamespaceUnlinkPath(vm, path) < 0) @@ -11529,6 +11623,7 @@ qemuProcessEventFree(struct qemuProcessEvent *event) VIR_FREE(event->data); break; case QEMU_PROCESS_EVENT_LAST: + default: break; } VIR_FREE(event); diff --git a/src/qemu/qemu_domain_address.c b/src/qemu/qemu_domain_address.c index de565dbf74..8695e7cc07 100644 --- a/src/qemu/qemu_domain_address.c +++ b/src/qemu/qemu_domain_address.c @@ -542,6 +542,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevic= eDefPtr dev, case VIR_DOMAIN_CONTROLLER_MODEL_USB_QUSB2: /* xen only */ case VIR_DOMAIN_CONTROLLER_MODEL_USB_NONE: case VIR_DOMAIN_CONTROLLER_MODEL_USB_LAST: + default: return 0; } =20 @@ -573,6 +574,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevic= eDefPtr dev, return pciFlags; =20 case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST: + default: return 0; } =20 @@ -582,6 +584,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevic= eDefPtr dev, case VIR_DOMAIN_CONTROLLER_TYPE_FDC: case VIR_DOMAIN_CONTROLLER_TYPE_CCID: case VIR_DOMAIN_CONTROLLER_TYPE_LAST: + default: /* should be 0 */ return pciFlags; } @@ -625,6 +628,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevic= eDefPtr dev, case VIR_DOMAIN_SOUND_MODEL_PCSPK: case VIR_DOMAIN_SOUND_MODEL_USB: case VIR_DOMAIN_SOUND_MODEL_LAST: + default: return 0; } =20 @@ -642,6 +646,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevic= eDefPtr dev, case VIR_DOMAIN_DISK_BUS_SATA: case VIR_DOMAIN_DISK_BUS_SD: case VIR_DOMAIN_DISK_BUS_LAST: + default: return 0; } =20 @@ -754,6 +759,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevic= eDefPtr dev, case VIR_DOMAIN_MEMBALLOON_MODEL_XEN: case VIR_DOMAIN_MEMBALLOON_MODEL_NONE: case VIR_DOMAIN_MEMBALLOON_MODEL_LAST: + default: return 0; } =20 @@ -763,6 +769,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevic= eDefPtr dev, return virtioFlags; =20 case VIR_DOMAIN_RNG_MODEL_LAST: + default: return 0; } =20 @@ -775,6 +782,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevic= eDefPtr dev, case VIR_DOMAIN_WATCHDOG_MODEL_IB700: case VIR_DOMAIN_WATCHDOG_MODEL_DIAG288: case VIR_DOMAIN_WATCHDOG_MODEL_LAST: + default: return 0; } =20 @@ -795,6 +803,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevic= eDefPtr dev, case VIR_DOMAIN_VIDEO_TYPE_DEFAULT: case VIR_DOMAIN_VIDEO_TYPE_GOP: case VIR_DOMAIN_VIDEO_TYPE_LAST: + default: return 0; } =20 @@ -811,6 +820,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevic= eDefPtr dev, case VIR_DOMAIN_INPUT_BUS_XEN: case VIR_DOMAIN_INPUT_BUS_PARALLELS: case VIR_DOMAIN_INPUT_BUS_LAST: + default: return 0; } =20 @@ -826,6 +836,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevic= eDefPtr dev, case VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_SCLP: case VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_NONE: case VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_LAST: + default: return 0; } =20 @@ -841,17 +852,14 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDev= iceDefPtr dev, case VIR_DOMAIN_DEVICE_LEASE: case VIR_DOMAIN_DEVICE_GRAPHICS: case VIR_DOMAIN_DEVICE_IOMMU: + return 0; case VIR_DOMAIN_DEVICE_LAST: case VIR_DOMAIN_DEVICE_NONE: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected device type %d"), dev->type); return 0; } - - /* We can never get here, because all cases are covered in the - * switch, and they all return, but the compiler will still - * complain "control reaches end of non-void function" unless - * we add the following return. - */ - return 0; } =20 =20 @@ -1576,7 +1584,7 @@ qemuDomainValidateDevicePCISlotsQ35(virDomainDefPtr d= ef, for (i =3D 0; i < def->ncontrollers; i++) { virDomainControllerDefPtr cont =3D def->controllers[i]; =20 - switch (cont->type) { + switch ((virDomainControllerType)cont->type) { case VIR_DOMAIN_CONTROLLER_TYPE_SATA: /* Verify that the first SATA controller is at 00:1F.2 the * q35 machine type *always* has a SATA controller at this @@ -1660,6 +1668,19 @@ qemuDomainValidateDevicePCISlotsQ35(virDomainDefPtr = def, } } break; + + case VIR_DOMAIN_CONTROLLER_TYPE_IDE: + case VIR_DOMAIN_CONTROLLER_TYPE_FDC: + case VIR_DOMAIN_CONTROLLER_TYPE_SCSI: + case VIR_DOMAIN_CONTROLLER_TYPE_VIRTIO_SERIAL: + case VIR_DOMAIN_CONTROLLER_TYPE_CCID: + break; + + case VIR_DOMAIN_CONTROLLER_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected controller type %d"), cont->type); + goto cleanup; } } =20 @@ -1958,6 +1979,8 @@ qemuDomainAssignDevicePCISlots(virDomainDefPtr def, addr.function =3D 2; addr.multi =3D VIR_TRISTATE_SWITCH_ABSENT; break; + default: + break; } =20 if (foundAddr) { @@ -2187,6 +2210,7 @@ qemuDomainPCIControllerSetDefaultModelName(virDomainC= ontrollerDefPtr cont, case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT: case VIR_DOMAIN_CONTROLLER_MODEL_PCI_DEFAULT: case VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST: + default: break; } } @@ -2574,8 +2598,12 @@ qemuDomainAssignPCIAddresses(virDomainDefPtr def, case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_UPSTREAM_PORT: case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT: case VIR_DOMAIN_CONTROLLER_MODEL_PCI_DEFAULT: - case VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST: break; + case VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected controller PCI model %d"), co= nt->model); + goto cleanup; } =20 /* check if every PCI bridge controller's index is larger than diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 0b8976010f..54da651c65 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -4563,6 +4563,8 @@ syncNicRxFilterMultiMode(char *ifname, virNetDevRxFil= terPtr guestFilter, ifname); } break; + default: + break; } } } @@ -4889,6 +4891,7 @@ static void qemuProcessEventHandler(void *data, void = *opaque) processMonitorEOFEvent(driver, vm); break; case QEMU_PROCESS_EVENT_LAST: + default: break; } =20 @@ -7753,11 +7756,15 @@ qemuDomainAttachDeviceLive(virDomainObjPtr vm, case VIR_DOMAIN_DEVICE_TPM: case VIR_DOMAIN_DEVICE_PANIC: case VIR_DOMAIN_DEVICE_IOMMU: - case VIR_DOMAIN_DEVICE_LAST: virReportError(VIR_ERR_OPERATION_UNSUPPORTED, _("live attach of device '%s' is not supported"), virDomainDeviceTypeToString(dev->type)); break; + case VIR_DOMAIN_DEVICE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected device type %d"), dev->type); + return -1; } =20 if (alias) { @@ -7852,11 +7859,15 @@ qemuDomainDetachDeviceLive(virDomainObjPtr vm, case VIR_DOMAIN_DEVICE_TPM: case VIR_DOMAIN_DEVICE_PANIC: case VIR_DOMAIN_DEVICE_IOMMU: - case VIR_DOMAIN_DEVICE_LAST: virReportError(VIR_ERR_OPERATION_UNSUPPORTED, _("live detach of device '%s' is not supported"), virDomainDeviceTypeToString(dev->type)); break; + case VIR_DOMAIN_DEVICE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected device type %d"), dev->type); + return -1; } =20 if (ret =3D=3D 0) @@ -7968,11 +7979,15 @@ qemuDomainUpdateDeviceLive(virConnectPtr conn, case VIR_DOMAIN_DEVICE_TPM: case VIR_DOMAIN_DEVICE_PANIC: case VIR_DOMAIN_DEVICE_IOMMU: - case VIR_DOMAIN_DEVICE_LAST: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("live update of device '%s' is not supported"), virDomainDeviceTypeToString(dev->type)); break; + case VIR_DOMAIN_DEVICE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected device type %d"), dev->type); + return -1; } =20 return ret; @@ -8155,11 +8170,15 @@ qemuDomainAttachDeviceConfig(virDomainDefPtr vmdef, case VIR_DOMAIN_DEVICE_TPM: case VIR_DOMAIN_DEVICE_PANIC: case VIR_DOMAIN_DEVICE_IOMMU: - case VIR_DOMAIN_DEVICE_LAST: virReportError(VIR_ERR_OPERATION_UNSUPPORTED, _("persistent attach of device '%s' is not support= ed"), virDomainDeviceTypeToString(dev->type)); return -1; + case VIR_DOMAIN_DEVICE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected device type %d"), dev->type); + return -1; } =20 if (virDomainDefPostParse(vmdef, caps, parse_flags, xmlopt, NULL) < 0) @@ -8338,11 +8357,15 @@ qemuDomainDetachDeviceConfig(virDomainDefPtr vmdef, case VIR_DOMAIN_DEVICE_TPM: case VIR_DOMAIN_DEVICE_PANIC: case VIR_DOMAIN_DEVICE_IOMMU: - case VIR_DOMAIN_DEVICE_LAST: virReportError(VIR_ERR_OPERATION_UNSUPPORTED, _("persistent detach of device '%s' is not supporte= d"), virDomainDeviceTypeToString(dev->type)); return -1; + case VIR_DOMAIN_DEVICE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected device type %d"), dev->type); + return -1; } =20 if (virDomainDefPostParse(vmdef, caps, parse_flags, xmlopt, NULL) < 0) @@ -8425,11 +8448,15 @@ qemuDomainUpdateDeviceConfig(virDomainDefPtr vmdef, case VIR_DOMAIN_DEVICE_TPM: case VIR_DOMAIN_DEVICE_PANIC: case VIR_DOMAIN_DEVICE_IOMMU: - case VIR_DOMAIN_DEVICE_LAST: virReportError(VIR_ERR_OPERATION_UNSUPPORTED, _("persistent update of device '%s' is not supporte= d"), virDomainDeviceTypeToString(dev->type)); return -1; + case VIR_DOMAIN_DEVICE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected device type %d"), dev->type); + return -1; } =20 if (virDomainDefPostParse(vmdef, caps, parse_flags, xmlopt, NULL) < 0) @@ -13268,6 +13295,11 @@ qemuDomainGetJobInfoDumpStats(virQEMUDriverPtr dri= ver, VIR_DEBUG("dump completed, bytes written=3D'%llu'", jobInfo->stats.dump.completed); break; + + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected dump status %d"), jobInfo->stats.dump= .status); + return -1; } =20 return 0; @@ -13329,6 +13361,11 @@ qemuDomainGetJobStatsInternal(virQEMUDriverPtr dri= ver, =20 case QEMU_DOMAIN_JOB_STATS_TYPE_NONE: break; + + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected job stats type %d"), jobInfo->statsTy= pe); + goto cleanup; } =20 ret =3D 0; @@ -14120,23 +14157,30 @@ qemuDomainSnapshotPrepareDiskExternalInactive(vir= DomainSnapshotDiskDefPtr snapdi case VIR_STORAGE_NET_PROTOCOL_TFTP: case VIR_STORAGE_NET_PROTOCOL_SSH: case VIR_STORAGE_NET_PROTOCOL_VXHS: - case VIR_STORAGE_NET_PROTOCOL_LAST: virReportError(VIR_ERR_INTERNAL_ERROR, _("external inactive snapshots are not supporte= d on " "'network' disks using '%s' protocol"), virStorageNetProtocolTypeToString(domdisk->src-= >protocol)); return -1; + case VIR_STORAGE_NET_PROTOCOL_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected storage protocol %d"), snapdisk->= src->protocol); + return -1; } break; =20 case VIR_STORAGE_TYPE_DIR: case VIR_STORAGE_TYPE_VOLUME: case VIR_STORAGE_TYPE_NONE: - case VIR_STORAGE_TYPE_LAST: virReportError(VIR_ERR_INTERNAL_ERROR, _("external inactive snapshots are not supported on= " "'%s' disks"), virStorageTypeToString(domDiskType= )); return -1; + case VIR_STORAGE_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected storage type %d"), domDiskType); } =20 switch ((virStorageType) snapDiskType) { @@ -14148,11 +14192,14 @@ qemuDomainSnapshotPrepareDiskExternalInactive(vir= DomainSnapshotDiskDefPtr snapdi case VIR_STORAGE_TYPE_DIR: case VIR_STORAGE_TYPE_VOLUME: case VIR_STORAGE_TYPE_NONE: - case VIR_STORAGE_TYPE_LAST: virReportError(VIR_ERR_INTERNAL_ERROR, _("external inactive snapshots are not supported on= " "'%s' disks"), virStorageTypeToString(snapDiskTyp= e)); return -1; + case VIR_STORAGE_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected storage type %d"), snapDiskType); } =20 if (qemuDomainSnapshotPrepareDiskShared(snapdisk, domdisk) < 0) @@ -14197,24 +14244,31 @@ qemuDomainSnapshotPrepareDiskExternalActive(virDo= mainSnapshotDiskDefPtr snapdisk case VIR_STORAGE_NET_PROTOCOL_TFTP: case VIR_STORAGE_NET_PROTOCOL_SSH: case VIR_STORAGE_NET_PROTOCOL_VXHS: - case VIR_STORAGE_NET_PROTOCOL_LAST: virReportError(VIR_ERR_INTERNAL_ERROR, _("external active snapshots are not supported = on " "'network' disks using '%s' protocol"), virStorageNetProtocolTypeToString(snapdisk->src= ->protocol)); return -1; - + case VIR_STORAGE_NET_PROTOCOL_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected storage protocol %d"), snapdisk->= src->protocol); + return -1; } break; =20 case VIR_STORAGE_TYPE_DIR: case VIR_STORAGE_TYPE_VOLUME: case VIR_STORAGE_TYPE_NONE: - case VIR_STORAGE_TYPE_LAST: virReportError(VIR_ERR_INTERNAL_ERROR, _("external active snapshots are not supported on " "'%s' disks"), virStorageTypeToString(actualType)= ); return -1; + case VIR_STORAGE_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected storage type %d"), actualType); + return -1; } =20 if (qemuDomainSnapshotPrepareDiskShared(snapdisk, domdisk) < 0) @@ -14315,23 +14369,31 @@ qemuDomainSnapshotPrepareDiskInternal(virConnectP= tr conn, case VIR_STORAGE_NET_PROTOCOL_TFTP: case VIR_STORAGE_NET_PROTOCOL_SSH: case VIR_STORAGE_NET_PROTOCOL_VXHS: - case VIR_STORAGE_NET_PROTOCOL_LAST: virReportError(VIR_ERR_INTERNAL_ERROR, _("internal inactive snapshots are not supporte= d on " "'network' disks using '%s' protocol"), virStorageNetProtocolTypeToString(disk->src->pr= otocol)); return -1; + case VIR_STORAGE_NET_PROTOCOL_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected storage protocol %d"), disk->src-= >protocol); + return -1; } break; =20 case VIR_STORAGE_TYPE_DIR: case VIR_STORAGE_TYPE_VOLUME: case VIR_STORAGE_TYPE_NONE: - case VIR_STORAGE_TYPE_LAST: virReportError(VIR_ERR_INTERNAL_ERROR, _("internal inactive snapshots are not supported on= " "'%s' disks"), virStorageTypeToString(actualType)= ); return -1; + case VIR_STORAGE_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected storage type %d"), actualType); + return -1; } =20 return 0; @@ -14425,10 +14487,14 @@ qemuDomainSnapshotPrepare(virConnectPtr conn, break; =20 case VIR_DOMAIN_SNAPSHOT_LOCATION_DEFAULT: - case VIR_DOMAIN_SNAPSHOT_LOCATION_LAST: virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("unexpected code path")); goto cleanup; + case VIR_DOMAIN_SNAPSHOT_LOCATION_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected snapshot location type %d"), disk= ->snapshot); + goto cleanup; } } =20 @@ -15176,10 +15242,14 @@ qemuDomainSnapshotCreateXML(virDomainPtr domain, /* invalid states */ case VIR_DOMAIN_NOSTATE: case VIR_DOMAIN_BLOCKED: /* invalid state, unused in qemu */ - case VIR_DOMAIN_LAST: virReportError(VIR_ERR_INTERNAL_ERROR, _("Invalid domain state %s"= ), virDomainStateTypeToString(vm->state.state)); goto cleanup; + case VIR_DOMAIN_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected domain state %d"), vm->state.state); + goto endjob; } =20 /* We are going to modify the domain below. Internal snapshots would u= se @@ -16089,12 +16159,16 @@ qemuDomainRevertToSnapshot(virDomainSnapshotPtr s= napshot, =20 case VIR_DOMAIN_NOSTATE: case VIR_DOMAIN_BLOCKED: - case VIR_DOMAIN_LAST: virReportError(VIR_ERR_INTERNAL_ERROR, _("Invalid target domain state '%s'. Refusing " "snapshot reversion"), virDomainStateTypeToString(snap->def->state)); goto endjob; + case VIR_DOMAIN_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected domain state %d"), snap->def->state); + goto endjob; } =20 ret =3D 0; @@ -21182,6 +21256,7 @@ qemuDomainModifyLifecycleAction(virDomainDefPtr def, def->onCrash =3D action; break; case VIR_DOMAIN_LIFECYCLE_LAST: + default: break; } } diff --git a/src/qemu/qemu_hostdev.c b/src/qemu/qemu_hostdev.c index 73d26f4c63..724a72867a 100644 --- a/src/qemu/qemu_hostdev.c +++ b/src/qemu/qemu_hostdev.c @@ -240,7 +240,10 @@ qemuHostdevPreparePCIDevicesCheckSupport(virDomainHost= devDefPtr *hostdevs, =20 case VIR_DOMAIN_HOSTDEV_PCI_BACKEND_XEN: case VIR_DOMAIN_HOSTDEV_PCI_BACKEND_TYPE_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected hostdev PCI backend %d"), *backen= d); + return false; } } =20 diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 0d7d02c25b..ac66df9ab9 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -778,15 +778,23 @@ qemuDomainAttachDeviceDiskLive(virConnectPtr conn, case VIR_DOMAIN_DISK_BUS_UML: case VIR_DOMAIN_DISK_BUS_SATA: case VIR_DOMAIN_DISK_BUS_SD: - case VIR_DOMAIN_DISK_BUS_LAST: virReportError(VIR_ERR_OPERATION_UNSUPPORTED, _("disk bus '%s' cannot be hotplugged."), virDomainDiskBusTypeToString(disk->bus)); + goto cleanup; + case VIR_DOMAIN_DISK_BUS_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected disk bus %d"), disk->bus); + goto cleanup; } break; =20 case VIR_DOMAIN_DISK_DEVICE_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected disk device type %d"), disk->device); + goto cleanup; } =20 cleanup: @@ -986,11 +994,16 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver, case VIR_DOMAIN_NET_TYPE_MCAST: case VIR_DOMAIN_NET_TYPE_INTERNAL: case VIR_DOMAIN_NET_TYPE_UDP: - case VIR_DOMAIN_NET_TYPE_LAST: virReportError(VIR_ERR_OPERATION_UNSUPPORTED, _("hotplug of interface type of %s is not implement= ed yet"), virDomainNetTypeToString(actualType)); goto cleanup; + + case VIR_DOMAIN_NET_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected net type %d"), actualType); + goto cleanup; } =20 /* Set device online immediately */ @@ -1297,12 +1310,15 @@ qemuDomainAttachHostPCIDevice(virQEMUDriverPtr driv= er, break; =20 case VIR_DOMAIN_HOSTDEV_PCI_BACKEND_XEN: - case VIR_DOMAIN_HOSTDEV_PCI_BACKEND_TYPE_LAST: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("QEMU does not support device assignment mode '%s= '"), virDomainHostdevSubsysPCIBackendTypeToString(backen= d)); goto error; - break; + case VIR_DOMAIN_HOSTDEV_PCI_BACKEND_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected hostdev PCI backend %d"), backend); + goto error; } =20 /* Temporarily add the hostdev to the domain definition. This is needed @@ -2662,6 +2678,9 @@ qemuDomainAttachShmemDevice(virQEMUDriverPtr driver, virDomainShmemModelTypeToString(shmem->model)); ATTRIBUTE_FALLTHROUGH; case VIR_DOMAIN_SHMEM_MODEL_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected shmem device type %d"), shmem->model); return -1; } =20 @@ -3590,9 +3609,15 @@ qemuDomainChangeGraphics(virQEMUDriverPtr driver, break; =20 case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NONE: - case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_LAST: /* nada */ break; + + case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected graphics listen type %d"), + newlisten->type); + goto cleanup; } } =20 @@ -4077,7 +4102,11 @@ qemuDomainRemoveHostDevice(virQEMUDriverPtr driver, case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV: break; case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected hostdev subsystem type %d"), + hostdev->source.subsys.type); + goto cleanup; } =20 virDomainHostdevDefFree(hostdev); @@ -4536,11 +4565,15 @@ qemuDomainRemoveDevice(virQEMUDriverPtr driver, case VIR_DOMAIN_DEVICE_TPM: case VIR_DOMAIN_DEVICE_PANIC: case VIR_DOMAIN_DEVICE_IOMMU: - case VIR_DOMAIN_DEVICE_LAST: virReportError(VIR_ERR_OPERATION_UNSUPPORTED, _("don't know how to remove a %s device"), virDomainDeviceTypeToString(dev->type)); break; + case VIR_DOMAIN_DEVICE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected device type %d"), dev->type); + break; } return ret; } @@ -5153,6 +5186,9 @@ qemuDomainDetachShmemDevice(virQEMUDriverPtr driver, virDomainShmemModelTypeToString(shmem->model)); ATTRIBUTE_FALLTHROUGH; case VIR_DOMAIN_SHMEM_MODEL_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected shmem model %d"), shmem->model); return -1; } =20 @@ -6282,10 +6318,14 @@ qemuDomainDetachInputDevice(virDomainObjPtr vm, virDomainInputBusTypeToString(input->bus)); return -1; =20 - case VIR_DOMAIN_INPUT_BUS_LAST: case VIR_DOMAIN_INPUT_BUS_USB: case VIR_DOMAIN_INPUT_BUS_VIRTIO: break; + case VIR_DOMAIN_INPUT_BUS_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected input bus %d"), input->bus); + return -1; } =20 qemuDomainMarkDeviceForRemoval(vm, &input->info); diff --git a/src/qemu/qemu_interface.c b/src/qemu/qemu_interface.c index cebb490221..93f5a9185a 100644 --- a/src/qemu/qemu_interface.c +++ b/src/qemu/qemu_interface.c @@ -122,9 +122,13 @@ qemuInterfaceStartDevice(virDomainNetDefPtr net) case VIR_DOMAIN_NET_TYPE_UDP: case VIR_DOMAIN_NET_TYPE_INTERNAL: case VIR_DOMAIN_NET_TYPE_HOSTDEV: - case VIR_DOMAIN_NET_TYPE_LAST: /* these types all require no action */ break; + case VIR_DOMAIN_NET_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected net type %d"), actualType); + goto cleanup; } =20 ret =3D 0; @@ -210,9 +214,13 @@ qemuInterfaceStopDevice(virDomainNetDefPtr net) case VIR_DOMAIN_NET_TYPE_UDP: case VIR_DOMAIN_NET_TYPE_INTERNAL: case VIR_DOMAIN_NET_TYPE_HOSTDEV: - case VIR_DOMAIN_NET_TYPE_LAST: /* these types all require no action */ break; + case VIR_DOMAIN_NET_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected net type %d"), actualType); + goto cleanup; } =20 ret =3D 0; diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index fe3342b38d..39d4ba7709 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -352,11 +352,15 @@ qemuMigrationPrecreateDisk(virConnectPtr conn, case VIR_STORAGE_TYPE_BLOCK: case VIR_STORAGE_TYPE_DIR: case VIR_STORAGE_TYPE_NONE: - case VIR_STORAGE_TYPE_LAST: virReportError(VIR_ERR_INTERNAL_ERROR, _("cannot precreate storage for disk type '%s'"), virStorageTypeToString(disk->src->type)); goto cleanup; + case VIR_STORAGE_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unespected storage type %d"), disk->src->type); + goto cleanup; } =20 if ((vol =3D virStorageVolLookupByName(pool, volName))) { @@ -775,6 +779,11 @@ qemuMigrationCancelOneDriveMirror(virQEMUDriverPtr dri= ver, case VIR_DOMAIN_BLOCK_JOB_COMPLETED: ret =3D 1; goto cleanup; + + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("UJnexpected block job status %d"), status); + goto cleanup; } =20 if (!(diskAlias =3D qemuAliasFromDisk(disk))) @@ -1400,6 +1409,7 @@ qemuMigrationUpdateJobType(qemuDomainJobInfoPtr jobIn= fo) case QEMU_MONITOR_MIGRATION_STATUS_ACTIVE: case QEMU_MONITOR_MIGRATION_STATUS_CANCELLING: case QEMU_MONITOR_MIGRATION_STATUS_LAST: + default: break; } } @@ -1500,6 +1510,11 @@ qemuMigrationCheckJobStatus(virQEMUDriverPtr driver, case QEMU_DOMAIN_JOB_STATUS_POSTCOPY: case QEMU_DOMAIN_JOB_STATUS_PAUSED: break; + + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected job status %d"), jobInfo->status); + goto cleanup; } =20 ret =3D 0; @@ -1603,6 +1618,7 @@ qemuMigrationCompleted(virQEMUDriverPtr driver, case QEMU_DOMAIN_JOB_STATUS_ACTIVE: case QEMU_DOMAIN_JOB_STATUS_COMPLETED: case QEMU_DOMAIN_JOB_STATUS_NONE: + default: /* Impossible. */ break; } @@ -1961,6 +1977,7 @@ qemuMigrationCleanup(virDomainObjPtr vm, /* single phase outgoing migration; unreachable */ case QEMU_MIGRATION_PHASE_NONE: case QEMU_MIGRATION_PHASE_LAST: + default: /* unreachable */ ; } @@ -3899,6 +3916,11 @@ qemuMigrationRun(virQEMUDriverPtr driver, spec->dest.fd.qemu); VIR_FORCE_CLOSE(spec->dest.fd.qemu); break; + + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected migration dest type %d"), spec->destT= ype); + goto exit_monitor; } =20 if (qemuDomainObjExitMonitor(driver, vm) < 0 || rc < 0) diff --git a/src/qemu/qemu_migration_cookie.c b/src/qemu/qemu_migration_coo= kie.c index 945530c409..5c721e7fe1 100644 --- a/src/qemu/qemu_migration_cookie.c +++ b/src/qemu/qemu_migration_cookie.c @@ -340,8 +340,12 @@ qemuMigrationCookieAddGraphics(qemuMigrationCookiePtr = mig, =20 case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_SOCKET: case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NONE: - case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_LAST: break; + case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected graphics listen type %d"), gl= isten->type); + return -1; } =20 /* Seamless migration is supported only for one graphics. */ diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c index 9b5ad72cf9..455a4eff17 100644 --- a/src/qemu/qemu_monitor.c +++ b/src/qemu/qemu_monitor.c @@ -2234,9 +2234,11 @@ qemuMonitorBlockIOStatusToError(const char *status) =20 /* unreachable */ case QEMU_MONITOR_BLOCK_IO_STATUS_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected block IO status %d"), st); + return -1; } - return -1; } =20 =20 @@ -3680,6 +3682,7 @@ qemuMonitorVMStatusToPausedReason(const char *status) =20 /* unreachable from this point on */ case QEMU_MONITOR_VM_STATUS_LAST: + default: ; } return VIR_DOMAIN_PAUSED_UNKNOWN; @@ -3865,7 +3868,10 @@ qemuMonitorCPUModelInfoCopy(const qemuMonitorCPUMode= lInfo *orig) break; =20 case QEMU_MONITOR_CPU_PROPERTY_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected CPU property %d"), orig->props[i]= .type); + goto error; } } =20 @@ -4366,6 +4372,7 @@ qemuMonitorGuestPanicEventInfoFormatMsg(qemuMonitorEv= entPanicInfoPtr info) =20 case QEMU_MONITOR_EVENT_PANIC_INFO_TYPE_NONE: case QEMU_MONITOR_EVENT_PANIC_INFO_TYPE_LAST: + default: break; } =20 diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 242b92ea3f..790ea0277c 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -899,6 +899,7 @@ qemuMonitorJSONHandleBlockJobImpl(qemuMonitorPtr mon, break; case VIR_DOMAIN_BLOCK_JOB_FAILED: case VIR_DOMAIN_BLOCK_JOB_LAST: + default: VIR_DEBUG("should not get here"); break; } @@ -1619,7 +1620,7 @@ qemuMonitorJSONUpdateVideoMemorySize(qemuMonitorPtr m= on, {0} }; =20 - switch (video->type) { + switch ((virDomainVideoType)video->type) { case VIR_DOMAIN_VIDEO_TYPE_VGA: if (qemuMonitorJSONGetObjectProperty(mon, path, "vgamem_mb", &prop= ) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, @@ -1663,10 +1664,22 @@ qemuMonitorJSONUpdateVideoMemorySize(qemuMonitorPtr= mon, video->vram =3D prop.val.ul * 1024; break; case VIR_DOMAIN_VIDEO_TYPE_CIRRUS: + case VIR_DOMAIN_VIDEO_TYPE_DEFAULT: + case VIR_DOMAIN_VIDEO_TYPE_VIRTIO: + break; case VIR_DOMAIN_VIDEO_TYPE_XEN: case VIR_DOMAIN_VIDEO_TYPE_VBOX: + case VIR_DOMAIN_VIDEO_TYPE_GOP: + case VIR_DOMAIN_VIDEO_TYPE_PARALLELS: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unsupported video type %s"), + virDomainVideoTypeToString(video->type)); + return -1; case VIR_DOMAIN_VIDEO_TYPE_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected video type %d"), video->type); + return -1; } =20 return 0; @@ -1689,7 +1702,7 @@ qemuMonitorJSONUpdateVideoVram64Size(qemuMonitorPtr m= on, {0} }; =20 - switch (video->type) { + switch ((virDomainVideoType)video->type) { case VIR_DOMAIN_VIDEO_TYPE_QXL: if (video->vram64 !=3D 0) { if (qemuMonitorJSONGetObjectProperty(mon, path, @@ -1705,10 +1718,22 @@ qemuMonitorJSONUpdateVideoVram64Size(qemuMonitorPtr= mon, case VIR_DOMAIN_VIDEO_TYPE_VGA: case VIR_DOMAIN_VIDEO_TYPE_VMVGA: case VIR_DOMAIN_VIDEO_TYPE_CIRRUS: + case VIR_DOMAIN_VIDEO_TYPE_DEFAULT: + case VIR_DOMAIN_VIDEO_TYPE_VIRTIO: + break; case VIR_DOMAIN_VIDEO_TYPE_XEN: case VIR_DOMAIN_VIDEO_TYPE_VBOX: + case VIR_DOMAIN_VIDEO_TYPE_GOP: + case VIR_DOMAIN_VIDEO_TYPE_PARALLELS: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unsupported video type %s"), + virDomainVideoTypeToString(video->type)); + return -1; case VIR_DOMAIN_VIDEO_TYPE_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected video type %d"), video->type); + return -1; } =20 return 0; @@ -3075,6 +3100,11 @@ qemuMonitorJSONGetMigrationStatsReply(virJSONValuePt= r reply, } } break; + + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected migration status %d"), stats->status); + return -1; } =20 return 0; @@ -5297,6 +5327,11 @@ qemuMonitorJSONParseCPUModelProperty(const char *key, case VIR_JSON_TYPE_ARRAY: case VIR_JSON_TYPE_NULL: return 0; + + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected JSON value type %d"), value->type); + return -1; } =20 machine_model->nprops++; @@ -5351,6 +5386,10 @@ qemuMonitorJSONGetCPUModelExpansion(qemuMonitorPtr m= on, case QEMU_MONITOR_CPU_MODEL_EXPANSION_FULL: typeStr =3D "full"; break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected CPU model expansion %d"), type); + goto cleanup; } =20 if (!(cmd =3D qemuMonitorJSONMakeCommand("query-cpu-model-expansion", @@ -5935,11 +5974,11 @@ int qemuMonitorJSONGetObjectProperty(qemuMonitorPtr= mon, ret =3D 0; break; case QEMU_MONITOR_OBJECT_PROPERTY_LAST: + default: virReportError(VIR_ERR_INTERNAL_ERROR, _("qom-get invalid object property type %d"), prop->type); goto cleanup; - break; } =20 if (ret =3D=3D -1) { @@ -5998,6 +6037,7 @@ int qemuMonitorJSONSetObjectProperty(qemuMonitorPtr m= on, MAKE_SET_CMD("s:value", prop->val.str); break; case QEMU_MONITOR_OBJECT_PROPERTY_LAST: + default: virReportError(VIR_ERR_INTERNAL_ERROR, _("qom-set invalid object property type %d"), prop->type); @@ -6708,16 +6748,15 @@ qemuMonitorJSONAttachCharDevCommand(const char *chr= ID, case VIR_DOMAIN_CHR_TYPE_PIPE: case VIR_DOMAIN_CHR_TYPE_STDIO: case VIR_DOMAIN_CHR_TYPE_NMDM: + virReportError(VIR_ERR_OPERATION_FAILED, + _("Hotplug unsupported for char device type '%s'"), + virDomainChrTypeToString(chr->type)); + goto cleanup; case VIR_DOMAIN_CHR_TYPE_LAST: - if (virDomainChrTypeToString(chr->type)) { - virReportError(VIR_ERR_OPERATION_FAILED, - _("Hotplug unsupported for char device type '%s= '"), - virDomainChrTypeToString(chr->type)); - } else { - virReportError(VIR_ERR_OPERATION_FAILED, - _("Hotplug unsupported for char device type '%d= '"), - chr->type); - } + default: + virReportError(VIR_ERR_OPERATION_FAILED, + _("Unexpected chardev type %d"), + chr->type); goto cleanup; } =20 diff --git a/src/qemu/qemu_monitor_text.c b/src/qemu/qemu_monitor_text.c index 2db71548cb..ddab0e7d5a 100644 --- a/src/qemu/qemu_monitor_text.c +++ b/src/qemu/qemu_monitor_text.c @@ -618,6 +618,9 @@ static int parseMemoryStat(char **text, unsigned int ta= g, case VIR_DOMAIN_MEMORY_STAT_UNUSED: case VIR_DOMAIN_MEMORY_STAT_AVAILABLE: value >>=3D 10; + break; + default: + break; } mstat->tag =3D tag; mstat->val =3D value; diff --git a/src/qemu/qemu_parse_command.c b/src/qemu/qemu_parse_command.c index 5fe3f97d03..3f5c4c0cbc 100644 --- a/src/qemu/qemu_parse_command.c +++ b/src/qemu/qemu_parse_command.c @@ -1577,7 +1577,10 @@ qemuParseCommandLineCPU(virDomainDefPtr dom, break; =20 case VIR_DOMAIN_HYPERV_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected hyperv feature %d"), f); + goto cleanup; } virStringListFree(hv_tokens); hv_tokens =3D NULL; @@ -2174,10 +2177,15 @@ qemuParseCommandLine(virCapsPtr caps, case VIR_STORAGE_NET_PROTOCOL_FTPS: case VIR_STORAGE_NET_PROTOCOL_TFTP: case VIR_STORAGE_NET_PROTOCOL_SSH: - case VIR_STORAGE_NET_PROTOCOL_LAST: case VIR_STORAGE_NET_PROTOCOL_NONE: /* ignored for now */ break; + case VIR_STORAGE_NET_PROTOCOL_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected storage protocol %d"), + disk->src->protocol); + goto error; } } =20 diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index b86ecda93f..9f30e80046 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -2702,7 +2702,7 @@ qemuProcessUpdateVideoRamSize(virQEMUDriverPtr driver, for (i =3D 0; i < vm->def->nvideos; i++) { video =3D vm->def->videos[i]; =20 - switch (video->type) { + switch ((virDomainVideoType)video->type) { case VIR_DOMAIN_VIDEO_TYPE_VGA: if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_VGA_VGAMEM)) { if (qemuMonitorUpdateVideoMemorySize(priv->mon, video, "VG= A") < 0) @@ -2740,10 +2740,22 @@ qemuProcessUpdateVideoRamSize(virQEMUDriverPtr driv= er, } break; case VIR_DOMAIN_VIDEO_TYPE_CIRRUS: + case VIR_DOMAIN_VIDEO_TYPE_DEFAULT: + case VIR_DOMAIN_VIDEO_TYPE_VIRTIO: + break; + case VIR_DOMAIN_VIDEO_TYPE_GOP: + case VIR_DOMAIN_VIDEO_TYPE_PARALLELS: case VIR_DOMAIN_VIDEO_TYPE_XEN: case VIR_DOMAIN_VIDEO_TYPE_VBOX: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Unsupported video type %s"), + virDomainVideoTypeToString(video->type)); + goto error; case VIR_DOMAIN_VIDEO_TYPE_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected video type %d"), video->type); + goto error; } =20 } @@ -3092,6 +3104,11 @@ qemuProcessRecoverMigrationIn(virQEMUDriverPtr drive= r, return -1; } break; + + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected migration phase %d"), phase); + return -1; } =20 qemuMigrationReset(driver, vm, QEMU_ASYNC_JOB_NONE); @@ -3172,6 +3189,11 @@ qemuProcessRecoverMigrationOut(virQEMUDriverPtr driv= er, /* migration completed, we need to kill the domain here */ *stopFlags |=3D VIR_QEMU_PROCESS_STOP_MIGRATED; return -1; + + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected migration phase %d"), phase); + return -1; } =20 if (resume) { @@ -3253,8 +3275,12 @@ qemuProcessRecoverJob(virQEMUDriverPtr driver, break; =20 case QEMU_ASYNC_JOB_NONE: - case QEMU_ASYNC_JOB_LAST: break; + case QEMU_ASYNC_JOB_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected job type %d"), job->asyncJob); + return -1; } =20 if (!virDomainObjIsActive(vm)) @@ -3290,8 +3316,12 @@ qemuProcessRecoverJob(virQEMUDriverPtr driver, case QEMU_JOB_ASYNC_NESTED: /* async job was already handled above */ case QEMU_JOB_NONE: - case QEMU_JOB_LAST: break; + case QEMU_JOB_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected job type %d"), job->active); + return -1; } =20 return 0; @@ -3612,6 +3642,12 @@ qemuProcessSPICEAllocatePorts(virQEMUDriverPtr drive= r, case VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_MODE_ANY: /* default mode will be used */ break; + + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected SPICE channel mode %d"), + graphics->data.spice.channels[i]); + goto cleanup; } } switch (defaultMode) { @@ -3628,6 +3664,12 @@ qemuProcessSPICEAllocatePorts(virQEMUDriverPtr drive= r, needTLSPort =3D true; needPort =3D true; break; + + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected SPICE channel mode %d"), + defaultMode); + goto cleanup; } } =20 @@ -3748,6 +3790,7 @@ qemuProcessVerifyHypervFeatures(virDomainDefPtr def, /* coverity[dead_error_begin] */ case VIR_DOMAIN_HYPERV_VENDOR_ID: case VIR_DOMAIN_HYPERV_LAST: + default: break; } } @@ -4297,10 +4340,18 @@ qemuProcessGraphicsReservePorts(virQEMUDriverPtr dr= iver, break; =20 case VIR_DOMAIN_GRAPHICS_TYPE_SDL: + break; case VIR_DOMAIN_GRAPHICS_TYPE_RDP: case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Unsupported graphics type %s"), + virDomainGraphicsTypeToString(graphics->type)); + return -1; case VIR_DOMAIN_GRAPHICS_TYPE_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected graphics type %d"), graphics->type); + return -1; } =20 return 0; @@ -4335,9 +4386,17 @@ qemuProcessGraphicsAllocatePorts(virQEMUDriverPtr dr= iver, break; =20 case VIR_DOMAIN_GRAPHICS_TYPE_SDL: + break; case VIR_DOMAIN_GRAPHICS_TYPE_RDP: case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Unsupported graphics type %s"), + virDomainGraphicsTypeToString(graphics->type)); + return -1; case VIR_DOMAIN_GRAPHICS_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected graphics type %d"), graphics->type); break; } =20 @@ -4371,7 +4430,7 @@ qemuProcessGetNetworkAddress(virConnectPtr conn, if (!netdef) goto cleanup; =20 - switch (netdef->forward.type) { + switch ((virNetworkForwardType)netdef->forward.type) { case VIR_NETWORK_FORWARD_NONE: case VIR_NETWORK_FORWARD_NAT: case VIR_NETWORK_FORWARD_ROUTE: @@ -4408,6 +4467,16 @@ qemuProcessGetNetworkAddress(virConnectPtr conn, goto cleanup; } break; + + case VIR_NETWORK_FORWARD_HOSTDEV: + break; + + case VIR_NETWORK_FORWARD_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected network forward type %d"), + netdef->forward.type); + goto cleanup; } =20 if (dev_name) { @@ -4484,10 +4553,18 @@ qemuProcessGraphicsSetupListen(virConnectPtr conn, break; =20 case VIR_DOMAIN_GRAPHICS_TYPE_SDL: + break; case VIR_DOMAIN_GRAPHICS_TYPE_RDP: case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Unsupported graphics type %s"), + virDomainGraphicsTypeToString(graphics->type)); + goto cleanup; case VIR_DOMAIN_GRAPHICS_TYPE_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected graphics type %d"), graphics->type); + goto cleanup; } =20 for (i =3D 0; i < graphics->nListens; i++) { @@ -4534,8 +4611,12 @@ qemuProcessGraphicsSetupListen(virConnectPtr conn, break; =20 case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NONE: - case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_LAST: break; + case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected graphics listen type %d"), gliste= n->type); + goto cleanup; } } =20 @@ -4773,10 +4854,18 @@ qemuProcessStartValidateGraphics(virDomainObjPtr vm) break; =20 case VIR_DOMAIN_GRAPHICS_TYPE_SDL: + break; case VIR_DOMAIN_GRAPHICS_TYPE_RDP: case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Unsupported graphics type %s"), + virDomainGraphicsTypeToString(graphics->type)); + return -1; case VIR_DOMAIN_GRAPHICS_TYPE_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected graphics type %d"), graphics->typ= e); + return -1; } } =20 @@ -6708,6 +6797,7 @@ void qemuProcessStop(virQEMUDriverPtr driver, case VIR_DOMAIN_NET_TYPE_HOSTDEV: case VIR_DOMAIN_NET_TYPE_UDP: case VIR_DOMAIN_NET_TYPE_LAST: + default: /* No special cleanup procedure for these types. */ break; } --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713571317308.5786543777193; Thu, 15 Feb 2018 08:52:51 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id DE7757487A; Thu, 15 Feb 2018 16:52:49 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id B433E5D734; Thu, 15 Feb 2018 16:52:40 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 79BA04A487; Thu, 15 Feb 2018 16:52:40 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGi9cD025885 for ; Thu, 15 Feb 2018 11:44:09 -0500 Received: by smtp.corp.redhat.com (Postfix) id 564BD2024CAA; Thu, 15 Feb 2018 16:44:09 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id EDD502024CA8; Thu, 15 Feb 2018 16:44:08 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:35 +0000 Message-Id: <20180215164347.11538-31-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 30/42] lxc: add default: case to all switch statements X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Thu, 15 Feb 2018 16:52:50 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Even if the compiler has validated that all enum constants have case statements in a switch, it is not safe to omit a default: case statement. When assigning a value to a variable / struct field that is defined with an enum type, nothing prevents an invalid value being assigned. So defensive code must assume existance of invalid values and thus all switches should have a default: case. Signed-off-by: Daniel P. Berrang=C3=A9 --- src/lxc/lxc_controller.c | 1 + src/lxc/lxc_driver.c | 2 ++ src/lxc/lxc_process.c | 10 +++++++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/lxc/lxc_controller.c b/src/lxc/lxc_controller.c index f9f26570cd..3620998100 100644 --- a/src/lxc/lxc_controller.c +++ b/src/lxc/lxc_controller.c @@ -2583,6 +2583,7 @@ int main(int argc, char *argv[]) =20 case 'h': case '?': + default: fprintf(stderr, "\n"); fprintf(stderr, "syntax: %s [OPTIONS]\n", argv[0]); fprintf(stderr, "\n"); diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c index 7d6568cdf8..07fd1f6ebe 100644 --- a/src/lxc/lxc_driver.c +++ b/src/lxc/lxc_driver.c @@ -1009,6 +1009,8 @@ lxcDomainGetMemoryParameters(virDomainPtr dom, VIR_TYPED_PARAM_ULLONG, val) < 0) goto cleanup; break; + default: + break; } } =20 diff --git a/src/lxc/lxc_process.c b/src/lxc/lxc_process.c index bc321e360d..82df80acfd 100644 --- a/src/lxc/lxc_process.c +++ b/src/lxc/lxc_process.c @@ -510,6 +510,10 @@ static int virLXCProcessSetupNamespaces(virConnectPtr = conn, if ((nsFDs[i] =3D virLXCProcessSetupNamespaceNet(i, lxcDef->ns= _val[i])) < 0) return -1; break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected namespace source %d"), lxcDef->ns= _source[i]); + return -1; } } =20 @@ -587,13 +591,17 @@ static int virLXCProcessSetupInterfaces(virConnectPtr= conn, case VIR_DOMAIN_NET_TYPE_MCAST: case VIR_DOMAIN_NET_TYPE_UDP: case VIR_DOMAIN_NET_TYPE_INTERNAL: - case VIR_DOMAIN_NET_TYPE_LAST: case VIR_DOMAIN_NET_TYPE_HOSTDEV: virReportError(VIR_ERR_INTERNAL_ERROR, _("Unsupported network type %s"), virDomainNetTypeToString(type)); goto cleanup; =20 + case VIR_DOMAIN_NET_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected net type %d"), type); + goto cleanup; } =20 /* Set bandwidth or warn if requested and not supported. */ --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713581927805.9221755027914; Thu, 15 Feb 2018 08:53:01 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D6B59C0546DE; Thu, 15 Feb 2018 16:52:59 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id AB9D85D75A; Thu, 15 Feb 2018 16:52:51 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 6636341F52; Thu, 15 Feb 2018 16:52:51 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGiAqB025896 for ; Thu, 15 Feb 2018 11:44:10 -0500 Received: by smtp.corp.redhat.com (Postfix) id E198A2026609; Thu, 15 Feb 2018 16:44:09 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id 841432024CA8; Thu, 15 Feb 2018 16:44:09 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:36 +0000 Message-Id: <20180215164347.11538-32-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 31/42] uml: add default: case to all switch statements X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Thu, 15 Feb 2018 16:53:00 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Even if the compiler has validated that all enum constants have case statements in a switch, it is not safe to omit a default: case statement. When assigning a value to a variable / struct field that is defined with an enum type, nothing prevents an invalid value being assigned. So defensive code must assume existance of invalid values and thus all switches should have a default: case. Signed-off-by: Daniel P. Berrang=C3=A9 --- src/uml/uml_conf.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/uml/uml_conf.c b/src/uml/uml_conf.c index 49589b33c9..e93aede797 100644 --- a/src/uml/uml_conf.c +++ b/src/uml/uml_conf.c @@ -259,7 +259,10 @@ umlBuildCommandLineNet(virConnectPtr conn, goto error; =20 case VIR_DOMAIN_NET_TYPE_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected net type %d"), def->type); + goto error; } =20 if (def->script) { --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713581058220.59417824833508; Thu, 15 Feb 2018 08:53:01 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id C5EEC5B306; Thu, 15 Feb 2018 16:52:59 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A105A5EE15; Thu, 15 Feb 2018 16:52:59 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 6A9D0180BAE3; Thu, 15 Feb 2018 16:52:59 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGiA2H025908 for ; Thu, 15 Feb 2018 11:44:10 -0500 Received: by smtp.corp.redhat.com (Postfix) id 787222024CAA; Thu, 15 Feb 2018 16:44:10 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id 1B27C2024CA8; Thu, 15 Feb 2018 16:44:10 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:37 +0000 Message-Id: <20180215164347.11538-33-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 32/42] bhyve: add default: case to all switch statements X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Thu, 15 Feb 2018 16:53:00 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Even if the compiler has validated that all enum constants have case statements in a switch, it is not safe to omit a default: case statement. When assigning a value to a variable / struct field that is defined with an enum type, nothing prevents an invalid value being assigned. So defensive code must assume existance of invalid values and thus all switches should have a default: case. Signed-off-by: Daniel P. Berrang=C3=A9 --- src/bhyve/bhyve_command.c | 12 ++++++++++-- src/libvirt_private.syms | 2 ++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/bhyve/bhyve_command.c b/src/bhyve/bhyve_command.c index c1241b8110..ad6775ebc8 100644 --- a/src/bhyve/bhyve_command.c +++ b/src/bhyve/bhyve_command.c @@ -420,9 +420,17 @@ bhyveBuildGraphicsArgStr(const virDomainDef *def, =20 virBufferAsprintf(&opt, ":%d", graphics->data.vnc.port); break; + case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NONE: + case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_SOCKET: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Unsupported listen type %s"), + virDomainGraphicsListenTypeToString(glisten->type)); + goto error; + case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_LAST: default: - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("Unsupported listen type")); + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected graphics listen type %d"), glisten->t= ype); + goto error; } =20 if (video->driver) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 6a9e109855..3630d687a6 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -366,6 +366,8 @@ virDomainGraphicsDefFree; virDomainGraphicsGetListen; virDomainGraphicsListenAppendAddress; virDomainGraphicsListenAppendSocket; +virDomainGraphicsListenTypeFromString; +virDomainGraphicsListenTypeToString; virDomainGraphicsSpiceChannelModeTypeFromString; virDomainGraphicsSpiceChannelModeTypeToString; virDomainGraphicsSpiceChannelNameTypeFromString; --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713761949769.9802913522228; Thu, 15 Feb 2018 08:56:01 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id AE5FC75755; Thu, 15 Feb 2018 16:56:00 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 8965D5D969; Thu, 15 Feb 2018 16:56:00 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 4D8ED4EF1F; Thu, 15 Feb 2018 16:56:00 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGiB22025918 for ; Thu, 15 Feb 2018 11:44:11 -0500 Received: by smtp.corp.redhat.com (Postfix) id 107AB2024CAA; Thu, 15 Feb 2018 16:44:11 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id A6A212024CA8; Thu, 15 Feb 2018 16:44:10 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:38 +0000 Message-Id: <20180215164347.11538-34-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 33/42] network: add default: case to all switch statements X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Thu, 15 Feb 2018 16:56:01 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Even if the compiler has validated that all enum constants have case statements in a switch, it is not safe to omit a default: case statement. When assigning a value to a variable / struct field that is defined with an enum type, nothing prevents an invalid value being assigned. So defensive code must assume existance of invalid values and thus all switches should have a default: case. Signed-off-by: Daniel P. Berrang=C3=A9 --- src/network/bridge_driver.c | 46 ++++++++++++++++++++++++++++++++++++++++-= ---- src/network/leaseshelper.c | 11 +++++++++-- 2 files changed, 50 insertions(+), 7 deletions(-) diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index dd6e3402ea..ce79a8ec7b 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -445,7 +445,7 @@ networkUpdateState(virNetworkObjPtr obj, } def =3D virNetworkObjGetDef(obj); =20 - switch (def->forward.type) { + switch ((virNetworkForwardType)def->forward.type) { case VIR_NETWORK_FORWARD_NONE: case VIR_NETWORK_FORWARD_NAT: case VIR_NETWORK_FORWARD_ROUTE: @@ -484,6 +484,13 @@ networkUpdateState(virNetworkObjPtr obj, case VIR_NETWORK_FORWARD_HOSTDEV: /* so far no extra checks */ break; + + case VIR_NETWORK_FORWARD_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected network forward type %d"), + def->forward.type); + goto cleanup; } =20 /* Try and read dnsmasq/radvd pids of active networks */ @@ -2731,9 +2738,14 @@ networkCreateInterfacePool(virNetworkDefPtr netdef) case VIR_NETWORK_FORWARD_NAT: case VIR_NETWORK_FORWARD_ROUTE: case VIR_NETWORK_FORWARD_OPEN: - case VIR_NETWORK_FORWARD_LAST: /* by definition these will never be encountered here */ break; + case VIR_NETWORK_FORWARD_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected network forward type %d"), + netdef->forward.type); + goto cleanup; } } =20 @@ -2823,7 +2835,7 @@ networkStartNetwork(virNetworkDriverStatePtr driver, VIR_HOOK_SUBOP_BEGIN) < 0) goto cleanup; =20 - switch (def->forward.type) { + switch ((virNetworkForwardType)def->forward.type) { =20 case VIR_NETWORK_FORWARD_NONE: case VIR_NETWORK_FORWARD_NAT: @@ -2852,6 +2864,13 @@ networkStartNetwork(virNetworkDriverStatePtr driver, if (networkStartNetworkExternal(obj) < 0) goto cleanup; break; + + case VIR_NETWORK_FORWARD_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected network forward type %d"), + def->forward.type); + goto cleanup; } =20 /* finally we can call the 'started' hook script if any */ @@ -2905,7 +2924,7 @@ networkShutdownNetwork(virNetworkDriverStatePtr drive= r, unlink(stateFile); VIR_FREE(stateFile); =20 - switch (def->forward.type) { + switch ((virNetworkForwardType)def->forward.type) { =20 case VIR_NETWORK_FORWARD_NONE: case VIR_NETWORK_FORWARD_NAT: @@ -2931,6 +2950,12 @@ networkShutdownNetwork(virNetworkDriverStatePtr driv= er, case VIR_NETWORK_FORWARD_HOSTDEV: ret =3D networkShutdownNetworkExternal(obj); break; + case VIR_NETWORK_FORWARD_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected network forward type %d"), + def->forward.type); + ret =3D -1; } =20 /* now that we know it's stopped call the hook if present */ @@ -3408,8 +3433,14 @@ networkValidate(virNetworkDriverStatePtr driver, } =20 case VIR_NETWORK_FORWARD_HOSTDEV_DEVICE_NONE: - case VIR_NETWORK_FORWARD_HOSTDEV_DEVICE_LAST: break; + + case VIR_NETWORK_FORWARD_HOSTDEV_DEVICE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected network forward hostdev type %d"), + iface->type); + return -1; } } if ((def->forward.npfs > 0) + usesInterface + usesAddress > 1) { @@ -4616,6 +4647,11 @@ networkAllocateActualDevice(virDomainDefPtr dom, case VIR_NETWORK_FORWARD_PASSTHROUGH: iface->data.network.actual->data.direct.mode =3D VIR_NETDEV_MA= CVLAN_MODE_PASSTHRU; break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected network forward type %d"), + netdef->forward.type); + goto error; } =20 /* merge virtualports from interface, network, and portgroup to diff --git a/src/network/leaseshelper.c b/src/network/leaseshelper.c index b4d87ee651..95cd2ee910 100644 --- a/src/network/leaseshelper.c +++ b/src/network/leaseshelper.c @@ -202,8 +202,12 @@ main(int argc, char **argv) break; =20 case VIR_LEASE_ACTION_INIT: - case VIR_LEASE_ACTION_LAST: break; + case VIR_LEASE_ACTION_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected lease action %d"), action); + goto cleanup; } =20 if (!(leases_array_new =3D virJSONValueNewArray())) { @@ -246,7 +250,10 @@ main(int argc, char **argv) break; =20 case VIR_LEASE_ACTION_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected lease action %d"), action); + goto cleanup; } =20 rv =3D EXIT_SUCCESS; --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713573103660.7386277976789; Thu, 15 Feb 2018 08:52:53 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id C50CDC058EDE; Thu, 15 Feb 2018 16:52:51 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 9F0DB1838B; Thu, 15 Feb 2018 16:52:51 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 6687041F54; Thu, 15 Feb 2018 16:52:51 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGiBC3025928 for ; Thu, 15 Feb 2018 11:44:11 -0500 Received: by smtp.corp.redhat.com (Postfix) id 9B5BC2024CAA; Thu, 15 Feb 2018 16:44:11 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3ECB52024CA8; Thu, 15 Feb 2018 16:44:11 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:39 +0000 Message-Id: <20180215164347.11538-35-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 34/42] interface: add default: case to all switch statements X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Thu, 15 Feb 2018 16:52:52 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Even if the compiler has validated that all enum constants have case statements in a switch, it is not safe to omit a default: case statement. When assigning a value to a variable / struct field that is defined with an enum type, nothing prevents an invalid value being assigned. So defensive code must assume existance of invalid values and thus all switches should have a default: case. Signed-off-by: Daniel P. Berrang=C3=A9 --- src/interface/interface_backend_udev.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/interface/interface_backend_udev.c b/src/interface/interfa= ce_backend_udev.c index 47e850bc2a..0153a46a16 100644 --- a/src/interface/interface_backend_udev.c +++ b/src/interface/interface_backend_udev.c @@ -64,9 +64,9 @@ virUdevStatusString(virUdevStatus status) return "inactive"; case VIR_UDEV_IFACE_ALL: return "all"; + default: + return ""; } - - return ""; } =20 /* @@ -125,6 +125,7 @@ udevGetDevices(struct udev *udev, virUdevStatus status) break; =20 case VIR_UDEV_IFACE_ALL: + default: break; } =20 @@ -1061,7 +1062,7 @@ udevGetIfaceDef(struct udev *udev, const char *name) ifacedef->type =3D VIR_INTERFACE_TYPE_BOND; } =20 - switch (ifacedef->type) { + switch ((virInterfaceType)ifacedef->type) { case VIR_INTERFACE_TYPE_VLAN: if (udevGetIfaceDefVlan(udev, dev, name, ifacedef) < 0) goto error; @@ -1076,6 +1077,11 @@ udevGetIfaceDef(struct udev *udev, const char *name) break; case VIR_INTERFACE_TYPE_ETHERNET: break; + case VIR_INTERFACE_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected interface type %d"), ifacedef->type); + goto error; } =20 udev_device_unref(dev); --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713773134685.4669493221708; Thu, 15 Feb 2018 08:56:13 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id DDCFC7B00C; Thu, 15 Feb 2018 16:56:11 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id D268B60260; Thu, 15 Feb 2018 16:56:08 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id C61181806103; Thu, 15 Feb 2018 16:56:07 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGiCuJ025939 for ; Thu, 15 Feb 2018 11:44:12 -0500 Received: by smtp.corp.redhat.com (Postfix) id 317C22026609; Thu, 15 Feb 2018 16:44:12 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id C93AA2024CA8; Thu, 15 Feb 2018 16:44:11 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:40 +0000 Message-Id: <20180215164347.11538-36-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 35/42] storage: add default: case to all switch statements X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Thu, 15 Feb 2018 16:56:12 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Even if the compiler has validated that all enum constants have case statements in a switch, it is not safe to omit a default: case statement. When assigning a value to a variable / struct field that is defined with an enum type, nothing prevents an invalid value being assigned. So defensive code must assume existance of invalid values and thus all switches should have a default: case. Signed-off-by: Daniel P. Berrang=C3=A9 --- src/storage/storage_backend_gluster.c | 12 ++++++++++-- src/storage/storage_backend_rbd.c | 6 +++++- src/storage/storage_driver.c | 1 + src/storage/storage_util.c | 18 ++++++++++++++++-- 4 files changed, 32 insertions(+), 5 deletions(-) diff --git a/src/storage/storage_backend_gluster.c b/src/storage/storage_ba= ckend_gluster.c index c6cc531e2f..68c3ad0fab 100644 --- a/src/storage/storage_backend_gluster.c +++ b/src/storage/storage_backend_gluster.c @@ -436,7 +436,6 @@ virStorageBackendGlusterVolDelete(virStoragePoolObjPtr = pool, case VIR_STORAGE_VOL_DIR: case VIR_STORAGE_VOL_BLOCK: case VIR_STORAGE_VOL_PLOOP: - case VIR_STORAGE_VOL_LAST: virReportError(VIR_ERR_NO_SUPPORT, _("removing of '%s' volumes is not supported " "by the gluster backend: %s"), @@ -472,6 +471,12 @@ virStorageBackendGlusterVolDelete(virStoragePoolObjPtr= pool, } } break; + + case VIR_STORAGE_VOL_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected storage vol type %d"), vol->type); + goto cleanup; } =20 ret =3D 0; @@ -606,7 +611,10 @@ virStorageFileBackendGlusterInitServer(virStorageFileB= ackendGlusterPrivPtr priv, break; =20 case VIR_STORAGE_NET_HOST_TRANS_LAST: - break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected storage host transport %d"), host->tr= ansport); + return -1; } =20 VIR_DEBUG("adding gluster host for %p: transport=3D%s host=3D%s port= =3D%d", diff --git a/src/storage/storage_backend_rbd.c b/src/storage/storage_backen= d_rbd.c index 642cacb673..e5d9d59ca0 100644 --- a/src/storage/storage_backend_rbd.c +++ b/src/storage/storage_backend_rbd.c @@ -1252,10 +1252,14 @@ virStorageBackendRBDVolWipe(virStoragePoolObjPtr po= ol, case VIR_STORAGE_VOL_WIPE_ALG_PFITZNER7: case VIR_STORAGE_VOL_WIPE_ALG_PFITZNER33: case VIR_STORAGE_VOL_WIPE_ALG_RANDOM: - case VIR_STORAGE_VOL_WIPE_ALG_LAST: virReportError(VIR_ERR_INVALID_ARG, _("unsupported algorithm %d"), algorithm); goto cleanup; + case VIR_STORAGE_VOL_WIPE_ALG_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected storage vol wipe algorith %d"), algor= ithm); + goto cleanup; } =20 if (r < 0) { diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c index d5e38af5aa..10bf2e0bda 100644 --- a/src/storage/storage_driver.c +++ b/src/storage/storage_driver.c @@ -1602,6 +1602,7 @@ storageVolLookupByPathCallback(virStoragePoolObjPtr o= bj, case VIR_STORAGE_POOL_SHEEPDOG: case VIR_STORAGE_POOL_ZFS: case VIR_STORAGE_POOL_LAST: + default: ignore_value(VIR_STRDUP(stable_path, data->path)); break; } diff --git a/src/storage/storage_util.c b/src/storage/storage_util.c index b4aed0f700..83a8494f78 100644 --- a/src/storage/storage_util.c +++ b/src/storage/storage_util.c @@ -2256,11 +2256,15 @@ virStorageBackendVolDeleteLocal(virStoragePoolObjPt= r pool ATTRIBUTE_UNUSED, case VIR_STORAGE_VOL_BLOCK: case VIR_STORAGE_VOL_NETWORK: case VIR_STORAGE_VOL_NETDIR: - case VIR_STORAGE_VOL_LAST: virReportError(VIR_ERR_NO_SUPPORT, _("removing block or network volumes is not support= ed: %s"), vol->target.path); return -1; + case VIR_STORAGE_VOL_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected storage vol type %d"), vol->type); + return -1; } return 0; } @@ -2749,8 +2753,9 @@ storageBackendVolWipeLocalFile(const char *path, _("'trim' algorithm not supported")); goto cleanup; case VIR_STORAGE_VOL_WIPE_ALG_LAST: + default: virReportError(VIR_ERR_INVALID_ARG, - _("unsupported algorithm %d"), + _("Unexpected storage vol wipe algorithm %d"), algorithm); goto cleanup; } @@ -3273,6 +3278,10 @@ virStorageBackendBLKIDFindEmpty(const char *device, "expected format '%s'"), device, format); break; + + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected storage blkid result %d"), rc); } =20 if (ret =3D=3D 0 && blkid_do_probe(probe) !=3D 1) { @@ -3448,6 +3457,11 @@ virStorageBackendPARTEDValidLabel(const char *device, virReportError(VIR_ERR_OPERATION_FAILED, "%s", _("Unknown Partition Type, requires build --overwri= te")); break; + + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected parted result %d"), check); + break; } =20 return ret; --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713583455756.5766456883184; Thu, 15 Feb 2018 08:53:03 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 18E3C28149; Thu, 15 Feb 2018 16:53:02 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 4A4E219CB2; Thu, 15 Feb 2018 16:52:59 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 695A241F73; Thu, 15 Feb 2018 16:52:59 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGiCTm025946 for ; Thu, 15 Feb 2018 11:44:12 -0500 Received: by smtp.corp.redhat.com (Postfix) id BD5C62024CAB; Thu, 15 Feb 2018 16:44:12 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id 605612024CA8; Thu, 15 Feb 2018 16:44:12 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:41 +0000 Message-Id: <20180215164347.11538-37-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 36/42] nodedev: add default: case to all switch statements X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Thu, 15 Feb 2018 16:53:02 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Even if the compiler has validated that all enum constants have case statements in a switch, it is not safe to omit a default: case statement. When assigning a value to a variable / struct field that is defined with an enum type, nothing prevents an invalid value being assigned. So defensive code must assume existance of invalid values and thus all switches should have a default: case. Signed-off-by: Daniel P. Berrang=C3=A9 --- src/node_device/node_device_udev.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_devi= ce_udev.c index e87eb32a85..bcd943d272 100644 --- a/src/node_device/node_device_udev.c +++ b/src/node_device/node_device_udev.c @@ -1267,8 +1267,13 @@ udevGetDeviceDetails(struct udev_device *device, case VIR_NODE_DEV_CAP_SYSTEM: case VIR_NODE_DEV_CAP_FC_HOST: case VIR_NODE_DEV_CAP_VPORTS: - case VIR_NODE_DEV_CAP_LAST: break; + case VIR_NODE_DEV_CAP_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected nodedve capability %d"), + def->caps->data.type); + return -1; } =20 return 0; --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713779148198.22990530545667; Thu, 15 Feb 2018 08:56:19 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id C978C356D6; Thu, 15 Feb 2018 16:56:16 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 948122CFDF; Thu, 15 Feb 2018 16:56:16 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 4E809180CB21; Thu, 15 Feb 2018 16:56:16 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGiD7g025952 for ; Thu, 15 Feb 2018 11:44:13 -0500 Received: by smtp.corp.redhat.com (Postfix) id 54E482024CAB; Thu, 15 Feb 2018 16:44:13 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id EB4C42024CA8; Thu, 15 Feb 2018 16:44:12 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:42 +0000 Message-Id: <20180215164347.11538-38-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 37/42] nwfilter: add default: case to all switch statements X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Thu, 15 Feb 2018 16:56:18 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Even if the compiler has validated that all enum constants have case statements in a switch, it is not safe to omit a default: case statement. When assigning a value to a variable / struct field that is defined with an enum type, nothing prevents an invalid value being assigned. So defensive code must assume existance of invalid values and thus all switches should have a default: case. Signed-off-by: Daniel P. Berrang=C3=A9 --- src/nwfilter/nwfilter_ebiptables_driver.c | 2 ++ src/nwfilter/nwfilter_gentech_driver.c | 23 ++++++++++++++++++++++- src/nwfilter/nwfilter_learnipaddr.c | 13 ++++++++++--- 3 files changed, 34 insertions(+), 4 deletions(-) diff --git a/src/nwfilter/nwfilter_ebiptables_driver.c b/src/nwfilter/nwfil= ter_ebiptables_driver.c index c624337f4d..3d49884e2e 100644 --- a/src/nwfilter/nwfilter_ebiptables_driver.c +++ b/src/nwfilter/nwfilter_ebiptables_driver.c @@ -1129,6 +1129,8 @@ iptablesEnforceDirection(virFirewallPtr fw, break; case CTDIR_STATUS_OLD: break; + default: + break; } =20 if (rule->tt !=3D VIR_NWFILTER_RULE_DIRECTION_INOUT) diff --git a/src/nwfilter/nwfilter_gentech_driver.c b/src/nwfilter/nwfilter= _gentech_driver.c index 840d419bb4..25822d5185 100644 --- a/src/nwfilter/nwfilter_gentech_driver.c +++ b/src/nwfilter/nwfilter_gentech_driver.c @@ -405,6 +405,10 @@ virNWFilterIncludeDefToRuleInst(virNWFilterDriverState= Ptr driver, break; case INSTANTIATE_ALWAYS: break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected new filter action %d"), useNewFilter); + goto cleanup; } =20 if (VIR_APPEND_ELEMENT(inst->filters, @@ -555,6 +559,11 @@ virNWFilterDetermineMissingVarsRec(virNWFilterDefPtr f= ilter, break; case INSTANTIATE_ALWAYS: break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected new filter action %d"), useNe= wFilter); + rc =3D -1; + goto error; } =20 rc =3D virNWFilterDetermineMissingVarsRec(next_filter, @@ -562,7 +571,7 @@ virNWFilterDetermineMissingVarsRec(virNWFilterDefPtr fi= lter, missing_vars, useNewFilter, driver); - + error: virNWFilterHashTableFree(tmpvars); =20 virNWFilterObjUnlock(obj); @@ -701,6 +710,10 @@ virNWFilterDoInstantiate(const unsigned char *vmuuid, case INSTANTIATE_ALWAYS: instantiate =3D true; break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected new filter action %d"), useNewFilter); + goto err_exit; } =20 if (instantiate) { @@ -825,6 +838,10 @@ virNWFilterInstantiateFilterUpdate(virNWFilterDriverSt= atePtr driver, =20 case INSTANTIATE_ALWAYS: break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected new filter action %d"), useNewFilter); + goto err_exit_vars1; } =20 rc =3D virNWFilterDoInstantiate(vmuuid, techdriver, filter, @@ -1102,6 +1119,10 @@ virNWFilterDomainFWUpdateCB(virDomainObjPtr obj, _("Failure while applying current f= ilter on " "VM %s"), vm->name); break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected filter step %d"), cb->ste= p); + ret =3D -1; } if (ret) break; diff --git a/src/nwfilter/nwfilter_learnipaddr.c b/src/nwfilter/nwfilter_le= arnipaddr.c index 9ca0639576..e2a3704289 100644 --- a/src/nwfilter/nwfilter_learnipaddr.c +++ b/src/nwfilter/nwfilter_learnipaddr.c @@ -351,9 +351,14 @@ procDHCPOpts(struct dhcp *dhcp, int dhcp_opts_len, case DHCP_MSGT_DHCPOFFER: *vmaddr =3D dhcp->yiaddr; *howDetected =3D DETECT_DHCP; - break; + break; + default: + break; } } + break; + default: + break; } dhcp_opts_len -=3D (2 + dhcpopt->len); dhcpopt =3D (struct dhcp_option*)((char *)dhcpopt + 2 + dhcpopt->l= en); @@ -542,11 +547,13 @@ learnIPAddressThread(void *arg) case ARPOP_REPLY: vmaddr =3D arphdr->ar_sip; howDetected =3D DETECT_STATIC; - break; + break; case ARPOP_REQUEST: vmaddr =3D arphdr->ar_tip; howDetected =3D DETECT_STATIC; - break; + break; + default: + break; } } } else if (virMacAddrCmpRaw(&req->macaddr, --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713604410753.1632760377458; Thu, 15 Feb 2018 08:53:24 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 2461F6E784; Thu, 15 Feb 2018 16:53:23 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 106705D741; Thu, 15 Feb 2018 16:53:14 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id D6B01244A7; Thu, 15 Feb 2018 16:53:13 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGiDn3025957 for ; Thu, 15 Feb 2018 11:44:14 -0500 Received: by smtp.corp.redhat.com (Postfix) id E18542024CAA; Thu, 15 Feb 2018 16:44:13 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id 830492024CA8; Thu, 15 Feb 2018 16:44:13 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:43 +0000 Message-Id: <20180215164347.11538-39-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 38/42] daemon: add default: case to all switch statements X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Thu, 15 Feb 2018 16:53:23 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Even if the compiler has validated that all enum constants have case statements in a switch, it is not safe to omit a default: case statement. When assigning a value to a variable / struct field that is defined with an enum type, nothing prevents an invalid value being assigned. So defensive code must assume existance of invalid values and thus all switches should have a default: case. Signed-off-by: Daniel P. Berrang=C3=A9 --- daemon/libvirtd.c | 4 ++-- daemon/remote.c | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/daemon/libvirtd.c b/daemon/libvirtd.c index c5bb12b8ce..4944633c57 100644 --- a/daemon/libvirtd.c +++ b/daemon/libvirtd.c @@ -290,9 +290,9 @@ static int daemonErrorLogFilter(virErrorPtr err, int pr= iority) case VIR_ERR_NO_SERVER: case VIR_ERR_NO_CLIENT: return VIR_LOG_DEBUG; + default: + return priority; } - - return priority; } =20 =20 diff --git a/daemon/remote.c b/daemon/remote.c index 6de4bd00d4..51740e7b10 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -3288,6 +3288,10 @@ remoteDispatchAuthList(virNetServerPtr server, case VIR_NET_SERVER_SERVICE_AUTH_SASL: ret->types.types_val[0] =3D REMOTE_AUTH_SASL; break; + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unexpected auth method %d"), auth); + goto cleanup; } =20 rv =3D 0; --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713609616255.87674696349472; Thu, 15 Feb 2018 08:53:29 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 509B7776F5; Thu, 15 Feb 2018 16:53:28 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 2C32618375; Thu, 15 Feb 2018 16:53:28 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id EC25F181A880; Thu, 15 Feb 2018 16:53:27 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGiEoo025964 for ; Thu, 15 Feb 2018 11:44:14 -0500 Received: by smtp.corp.redhat.com (Postfix) id 78874200BC0F; Thu, 15 Feb 2018 16:44:14 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id 1B3BF2024CA8; Thu, 15 Feb 2018 16:44:14 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:44 +0000 Message-Id: <20180215164347.11538-40-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 39/42] tests: add default: case to all switch statements X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Thu, 15 Feb 2018 16:53:28 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Even if the compiler has validated that all enum constants have case statements in a switch, it is not safe to omit a default: case statement. When assigning a value to a variable / struct field that is defined with an enum type, nothing prevents an invalid value being assigned. So defensive code must assume existance of invalid values and thus all switches should have a default: case. Signed-off-by: Daniel P. Berrang=C3=A9 --- tests/cputest.c | 31 +++++++++++++++++++------------ tests/domaincapstest.c | 1 + tests/qemuhotplugtest.c | 4 ++++ tests/storagevolxml2argvtest.c | 2 ++ tests/virusbtest.c | 6 ++++++ 5 files changed, 32 insertions(+), 12 deletions(-) diff --git a/tests/cputest.c b/tests/cputest.c index 1e79edbef7..f29a6967dd 100644 --- a/tests/cputest.c +++ b/tests/cputest.c @@ -178,14 +178,18 @@ static const char * cpuTestCompResStr(virCPUCompareResult result) { switch (result) { - case VIR_CPU_COMPARE_ERROR: return "ERROR"; - case VIR_CPU_COMPARE_INCOMPATIBLE: return "INCOMPATIBLE"; - case VIR_CPU_COMPARE_IDENTICAL: return "IDENTICAL"; - case VIR_CPU_COMPARE_SUPERSET: return "SUPERSET"; - case VIR_CPU_COMPARE_LAST: break; + case VIR_CPU_COMPARE_ERROR: + return "ERROR"; + case VIR_CPU_COMPARE_INCOMPATIBLE: + return "INCOMPATIBLE"; + case VIR_CPU_COMPARE_IDENTICAL: + return "IDENTICAL"; + case VIR_CPU_COMPARE_SUPERSET: + return "SUPERSET"; + case VIR_CPU_COMPARE_LAST: + default: + return "unknown"; } - - return "unknown"; } =20 =20 @@ -193,12 +197,15 @@ static const char * cpuTestBoolWithErrorStr(enum cpuTestBoolWithError result) { switch (result) { - case FAIL: return "FAIL"; - case NO: return "NO"; - case YES: return "YES"; + case FAIL: + return "FAIL"; + case NO: + return "NO"; + case YES: + return "YES"; + default: + return "unknown"; } - - return "unknown"; } =20 =20 diff --git a/tests/domaincapstest.c b/tests/domaincapstest.c index 533a4b3791..1d9fe0fd0f 100644 --- a/tests/domaincapstest.c +++ b/tests/domaincapstest.c @@ -301,6 +301,7 @@ test_virDomainCapsFormat(const void *opaque) =20 switch (data->capsType) { case CAPS_NONE: + default: break; =20 case CAPS_ALL: diff --git a/tests/qemuhotplugtest.c b/tests/qemuhotplugtest.c index 63bfe44145..47de86792a 100644 --- a/tests/qemuhotplugtest.c +++ b/tests/qemuhotplugtest.c @@ -329,6 +329,10 @@ testQemuHotplug(const void *data) =20 case UPDATE: ret =3D testQemuHotplugUpdate(vm, dev); + break; + + default: + ret =3D -1; } =20 cleanup: diff --git a/tests/storagevolxml2argvtest.c b/tests/storagevolxml2argvtest.c index 5857d5e350..f8330cb4d2 100644 --- a/tests/storagevolxml2argvtest.c +++ b/tests/storagevolxml2argvtest.c @@ -29,6 +29,8 @@ testSetVolumeType(virStorageVolDefPtr vol, case VIR_STORAGE_POOL_LOGICAL: vol->type =3D VIR_STORAGE_VOL_BLOCK; return; + default: + return; } } =20 diff --git a/tests/virusbtest.c b/tests/virusbtest.c index 8728fe9092..a5bbbdbf32 100644 --- a/tests/virusbtest.c +++ b/tests/virusbtest.c @@ -93,6 +93,9 @@ static int testDeviceFind(const void *opaque) rv =3D virUSBDeviceFindByBus(info->bus, info->devno, info->vroot, info->mandatory, &dev); break; + default: + rv =3D -1; + break; } =20 if (info->expectFailure) { @@ -123,6 +126,9 @@ static int testDeviceFind(const void *opaque) goto cleanup; } break; + default: + ret =3D -1; + goto cleanup; } =20 ret =3D 0; --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713627059691.6207190560147; Thu, 15 Feb 2018 08:53:47 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id AAE1733BC3; Thu, 15 Feb 2018 16:53:45 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 83BB360C97; Thu, 15 Feb 2018 16:53:45 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 4B1F5181A88F; Thu, 15 Feb 2018 16:53:45 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGiFI3025973 for ; Thu, 15 Feb 2018 11:44:15 -0500 Received: by smtp.corp.redhat.com (Postfix) id 0F1E92024CAB; Thu, 15 Feb 2018 16:44:15 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id A66C02024CA8; Thu, 15 Feb 2018 16:44:14 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:45 +0000 Message-Id: <20180215164347.11538-41-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 40/42] tools: add default: case to all switch statements X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Thu, 15 Feb 2018 16:53:46 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Even if the compiler has validated that all enum constants have case statements in a switch, it is not safe to omit a default: case statement. When assigning a value to a variable / struct field that is defined with an enum type, nothing prevents an invalid value being assigned. So defensive code must assume existance of invalid values and thus all switches should have a default: case. Signed-off-by: Daniel P. Berrang=C3=A9 --- tools/virsh-domain-monitor.c | 4 ++++ tools/virsh-domain.c | 14 ++++++++++---- tools/virsh-nodedev.c | 1 + tools/virsh-pool.c | 1 + tools/virsh.c | 1 + tools/virt-admin.c | 1 + tools/vsh.c | 5 +++++ 7 files changed, 23 insertions(+), 4 deletions(-) diff --git a/tools/virsh-domain-monitor.c b/tools/virsh-domain-monitor.c index 32a42707eb..4903acb235 100644 --- a/tools/virsh-domain-monitor.c +++ b/tools/virsh-domain-monitor.c @@ -258,6 +258,7 @@ virshDomainStateReasonToString(int state, int reason) str =3D virshDomainPMSuspendedReasonTypeToString(reason); break; case VIR_DOMAIN_LAST: + default: ; } =20 @@ -2232,6 +2233,9 @@ cmdDomIfAddr(vshControl *ctl, const vshCmd *cmd) case VIR_IP_ADDR_TYPE_IPV6: type =3D "ipv6"; break; + default: + type =3D "unknown"; + break; } =20 virBufferAsprintf(&buf, "%-12s %s/%d", diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c index 5a0e0c1b21..1ad4cf38eb 100644 --- a/tools/virsh-domain.c +++ b/tools/virsh-domain.c @@ -938,11 +938,13 @@ cmdAttachInterface(vshControl *ctl, const vshCmd *cmd) case VIR_DOMAIN_NET_TYPE_MCAST: case VIR_DOMAIN_NET_TYPE_UDP: case VIR_DOMAIN_NET_TYPE_INTERNAL: - case VIR_DOMAIN_NET_TYPE_LAST: vshError(ctl, _("No support for %s in command 'attach-interface'"), type); goto cleanup; - break; + case VIR_DOMAIN_NET_TYPE_LAST: + default: + vshError(ctl, _("Unexpected net type %d"), typ); + goto cleanup; } =20 if (target !=3D NULL) @@ -2048,17 +2050,16 @@ cmdBlockCommit(vshControl *ctl, const vshCmd *cmd) /* Execution continues here only if --wait or friends were specified */ switch (virshBlockJobWait(bjWait)) { case -1: + default: goto cleanup; =20 case VIR_DOMAIN_BLOCK_JOB_CANCELED: vshPrintExtra(ctl, "\n%s", _("Commit aborted")); goto cleanup; - break; =20 case VIR_DOMAIN_BLOCK_JOB_FAILED: vshError(ctl, "\n%s", _("Commit failed")); goto cleanup; - break; =20 case VIR_DOMAIN_BLOCK_JOB_READY: case VIR_DOMAIN_BLOCK_JOB_COMPLETED: @@ -2366,6 +2367,7 @@ cmdBlockCopy(vshControl *ctl, const vshCmd *cmd) /* Execution continues here only if --wait or friends were specified */ switch (virshBlockJobWait(bjWait)) { case -1: + default: goto cleanup; =20 case VIR_DOMAIN_BLOCK_JOB_CANCELED: @@ -2775,6 +2777,7 @@ cmdBlockPull(vshControl *ctl, const vshCmd *cmd) /* Execution continues here only if --wait or friends were specified */ switch (virshBlockJobWait(bjWait)) { case -1: + default: goto cleanup; =20 case VIR_DOMAIN_BLOCK_JOB_CANCELED: @@ -10838,6 +10841,8 @@ virshMigrateTimeout(vshControl *ctl, if (virDomainMigrateStartPostCopy(dom, 0) < 0) vshDebug(ctl, VSH_ERR_INFO, "switching to post-copy failed\n"); break; + default: + break; } } =20 @@ -12707,6 +12712,7 @@ virshDomainEventDetailToString(int event, int detai= l) str =3D virshDomainEventCrashedTypeToString(detail); break; case VIR_DOMAIN_EVENT_LAST: + default: break; } return str ? _(str) : _("unknown"); diff --git a/tools/virsh-nodedev.c b/tools/virsh-nodedev.c index d25fe0e09b..c355c8a013 100644 --- a/tools/virsh-nodedev.c +++ b/tools/virsh-nodedev.c @@ -465,6 +465,7 @@ cmdNodeListDevices(vshControl *ctl, const vshCmd *cmd A= TTRIBUTE_UNUSED) flags |=3D VIR_CONNECT_LIST_NODE_DEVICES_CAP_CCW_DEV; break; case VIR_NODE_DEV_CAP_LAST: + default: break; } } diff --git a/tools/virsh-pool.c b/tools/virsh-pool.c index 56b6cfc73d..f827925349 100644 --- a/tools/virsh-pool.c +++ b/tools/virsh-pool.c @@ -1199,6 +1199,7 @@ cmdPoolList(vshControl *ctl, const vshCmd *cmd ATTRIB= UTE_UNUSED) flags |=3D VIR_CONNECT_LIST_STORAGE_POOLS_VSTORAGE; break; case VIR_STORAGE_POOL_LAST: + default: break; } } diff --git a/tools/virsh.c b/tools/virsh.c index 5f8352e861..96cf902e25 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -120,6 +120,7 @@ virshCatchDisconnect(virConnectPtr conn, /* coverity[dead_error_condition] */ case VIR_CONNECT_CLOSE_REASON_CLIENT: case VIR_CONNECT_CLOSE_REASON_LAST: + default: break; } vshError(ctl, _(str), NULLSTR(uri)); diff --git a/tools/virt-admin.c b/tools/virt-admin.c index c86b5763a7..40dfd89046 100644 --- a/tools/virt-admin.c +++ b/tools/virt-admin.c @@ -142,6 +142,7 @@ vshAdmCatchDisconnect(virAdmConnectPtr conn ATTRIBUTE_U= NUSED, /* coverity[dead_error_condition] */ case VIR_CONNECT_CLOSE_REASON_CLIENT: case VIR_CONNECT_CLOSE_REASON_LAST: + default: break; } =20 diff --git a/tools/vsh.c b/tools/vsh.c index 37c292a03d..304209e200 100644 --- a/tools/vsh.c +++ b/tools/vsh.c @@ -408,6 +408,9 @@ vshCmddefCheckInternals(const vshCmdDef *cmd) =20 case VSH_OT_INT: break; + + default: + return -1; } } return 0; @@ -705,6 +708,7 @@ vshCmddefHelp(vshControl *ctl, const vshCmdDef *def) } break; case VSH_OT_ALIAS: + default: /* aliases are intentionally undocumented */ continue; } @@ -747,6 +751,7 @@ vshCmddefHelp(vshControl *ctl, const vshCmdDef *def) opt->name); break; case VSH_OT_ALIAS: + default: continue; } =20 --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1518713593707651.6135262717343; Thu, 15 Feb 2018 08:53:13 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 58A35883D1; Thu, 15 Feb 2018 16:53:12 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 14AD45F737; Thu, 15 Feb 2018 16:53:12 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id D5806181A2E7; Thu, 15 Feb 2018 16:53:11 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGiFUa025984 for ; Thu, 15 Feb 2018 11:44:15 -0500 Received: by smtp.corp.redhat.com (Postfix) id 9A1A42024CAB; Thu, 15 Feb 2018 16:44:15 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3D3D02024CA8; Thu, 15 Feb 2018 16:44:15 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:46 +0000 Message-Id: <20180215164347.11538-42-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 41/42] examples: add default: case to all switch statements X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Thu, 15 Feb 2018 16:53:12 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Even if the compiler has validated that all enum constants have case statements in a switch, it is not safe to omit a default: case statement. When assigning a value to a variable / struct field that is defined with an enum type, nothing prevents an invalid value being assigned. So defensive code must assume existance of invalid values and thus all switches should have a default: case. Signed-off-by: Daniel P. Berrang=C3=A9 --- examples/object-events/event-test.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/examples/object-events/event-test.c b/examples/object-events/e= vent-test.c index 8499e0b38e..edb17af82e 100644 --- a/examples/object-events/event-test.c +++ b/examples/object-events/event-test.c @@ -49,6 +49,7 @@ connectClose(virConnectPtr conn ATTRIBUTE_UNUSED, return; =20 case VIR_CONNECT_CLOSE_REASON_LAST: + default: break; }; =20 @@ -88,6 +89,7 @@ eventToString(int event) return "Crashed"; =20 case VIR_DOMAIN_EVENT_LAST: + default: break; } =20 @@ -115,6 +117,7 @@ eventDetailToString(int event, return "Snapshot"; =20 case VIR_DOMAIN_EVENT_DEFINED_LAST: + default: break; } break; @@ -128,6 +131,7 @@ eventDetailToString(int event, return "Renamed"; =20 case VIR_DOMAIN_EVENT_UNDEFINED_LAST: + default: break; } break; @@ -150,6 +154,7 @@ eventDetailToString(int event, return "Event wakeup"; =20 case VIR_DOMAIN_EVENT_STARTED_LAST: + default: break; } break; @@ -184,6 +189,7 @@ eventDetailToString(int event, return "Post-copy Error"; =20 case VIR_DOMAIN_EVENT_SUSPENDED_LAST: + default: break; } break; @@ -203,6 +209,7 @@ eventDetailToString(int event, return "Post-copy"; =20 case VIR_DOMAIN_EVENT_RESUMED_LAST: + default: break; } break; @@ -231,6 +238,7 @@ eventDetailToString(int event, return "Snapshot"; =20 case VIR_DOMAIN_EVENT_STOPPED_LAST: + default: break; } break; @@ -247,6 +255,7 @@ eventDetailToString(int event, return "Host request"; =20 case VIR_DOMAIN_EVENT_SHUTDOWN_LAST: + default: break; } break; @@ -260,6 +269,7 @@ eventDetailToString(int event, return "Disk"; =20 case VIR_DOMAIN_EVENT_PMSUSPENDED_LAST: + default: break; } break; @@ -270,11 +280,13 @@ eventDetailToString(int event, return "Panicked"; =20 case VIR_DOMAIN_EVENT_CRASHED_LAST: + default: break; } break; =20 case VIR_DOMAIN_EVENT_LAST: + default: break; } =20 @@ -299,6 +311,7 @@ networkEventToString(int event) return "Stopped"; =20 case VIR_NETWORK_EVENT_LAST: + default: break; } =20 @@ -317,6 +330,7 @@ guestAgentLifecycleEventStateToString(int event) return "Connected"; =20 case VIR_CONNECT_DOMAIN_EVENT_AGENT_LIFECYCLE_STATE_LAST: + default: break; } =20 @@ -338,6 +352,7 @@ guestAgentLifecycleEventReasonToString(int event) return "Channel event"; =20 case VIR_CONNECT_DOMAIN_EVENT_AGENT_LIFECYCLE_REASON_LAST: + default: break; } =20 @@ -361,6 +376,7 @@ storagePoolEventToString(int event) case VIR_STORAGE_POOL_EVENT_DELETED: return "Deleted"; case VIR_STORAGE_POOL_EVENT_LAST: + default: break; } return "unknown"; @@ -375,6 +391,7 @@ nodeDeviceEventToString(int event) case VIR_NODE_DEVICE_EVENT_DELETED: return "Deleted"; case VIR_NODE_DEVICE_EVENT_LAST: + default: break; } return "unknown"; @@ -392,6 +409,7 @@ secretEventToString(int event) return "Undefined"; =20 case VIR_SECRET_EVENT_LAST: + default: break; } =20 @@ -527,6 +545,7 @@ graphicsPhaseToStr(int phase) return "disconnected"; =20 case VIR_DOMAIN_EVENT_GRAPHICS_LAST: + default: break; } =20 @@ -589,6 +608,7 @@ diskChangeReasonToStr(int reason) return "disk dropped due to startupPolicy"; =20 case VIR_DOMAIN_EVENT_DISK_CHANGE_LAST: + default: break; } =20 @@ -623,6 +643,7 @@ trayChangeReasonToStr(int reason) return "close"; =20 case VIR_DOMAIN_EVENT_TRAY_CHANGE_LAST: + default: break; } =20 @@ -874,6 +895,7 @@ blockJobTypeToStr(int type) switch ((virDomainBlockJobType) type) { case VIR_DOMAIN_BLOCK_JOB_TYPE_UNKNOWN: case VIR_DOMAIN_BLOCK_JOB_TYPE_LAST: + default: break; =20 case VIR_DOMAIN_BLOCK_JOB_TYPE_PULL: @@ -910,6 +932,7 @@ blockJobStatusToStr(int status) return "ready"; =20 case VIR_DOMAIN_BLOCK_JOB_LAST: + default: break; } =20 @@ -1006,6 +1029,7 @@ metadataTypeToStr(int status) return "element"; =20 case VIR_DOMAIN_METADATA_LAST: + default: break; } =20 --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Tue Apr 30 02:30:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 151871360797891.82095540870228; Thu, 15 Feb 2018 08:53:27 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id BB8CB19D24F; Thu, 15 Feb 2018 16:53:26 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 76E4863F97; Thu, 15 Feb 2018 16:53:25 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 395E4244EF; Thu, 15 Feb 2018 16:53:25 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w1FGiGW1025996 for ; Thu, 15 Feb 2018 11:44:16 -0500 Received: by smtp.corp.redhat.com (Postfix) id 30F332024CAA; Thu, 15 Feb 2018 16:44:16 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id C7C562024CA8; Thu, 15 Feb 2018 16:44:15 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 15 Feb 2018 16:43:47 +0000 Message-Id: <20180215164347.11538-43-berrange@redhat.com> In-Reply-To: <20180215164347.11538-1-berrange@redhat.com> References: <20180215164347.11538-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 42/42] m4: enable the -Wswitch-default warning flag X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Thu, 15 Feb 2018 16:53:27 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Even if the compiler has validated that all enum constants have case statements in a switch, it is not safe to omit a default: case statement. When assigning a value to a variable / struct field that is defined with an enum type, nothing prevents an invalid value being assigned. So defensive code must assume existance of invalid values and thus all switches should have a default: case. This enables the -Wswitch-default compiler warning flag which will now enforce this requirement. Signed-off-by: Daniel P. Berrang=C3=A9 --- m4/virt-compile-warnings.m4 | 2 -- 1 file changed, 2 deletions(-) diff --git a/m4/virt-compile-warnings.m4 b/m4/virt-compile-warnings.m4 index fc185aef38..216a3ee0e9 100644 --- a/m4/virt-compile-warnings.m4 +++ b/m4/virt-compile-warnings.m4 @@ -45,8 +45,6 @@ AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[ dontwarn=3D"$dontwarn -Wcast-qual" # We need to use long long in many places dontwarn=3D"$dontwarn -Wlong-long" - # We allow manual list of all enum cases without default: - dontwarn=3D"$dontwarn -Wswitch-default" # Not a problem since we don't use -fstrict-overflow dontwarn=3D"$dontwarn -Wstrict-overflow" # Not a problem since we don't use -funsafe-loop-optimizations --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list