From nobody Sun Feb 8 05:41:07 2026 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