1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2025-03-07 17:28:15 +00:00

virDomainSmartcardDef: Declare 'type' as virDomainSmartcardType

Use 'virXMLPropEnum' to parse it and fix all switch statements which
didn't include the VIR_DOMAIN_SMARTCARD_TYPE_LAST case.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Peter Krempa 2021-10-11 16:47:59 +02:00
parent 3c819a6ce8
commit 43d48eebf9
5 changed files with 14 additions and 23 deletions

View File

@ -2884,6 +2884,7 @@ void virDomainSmartcardDefFree(virDomainSmartcardDef *def)
virObjectUnref(def->data.passthru); virObjectUnref(def->data.passthru);
break; break;
case VIR_DOMAIN_SMARTCARD_TYPE_LAST:
default: default:
break; break;
} }
@ -11602,7 +11603,6 @@ virDomainSmartcardDefParseXML(virDomainXMLOption *xmlopt,
unsigned int flags) unsigned int flags)
{ {
g_autoptr(virDomainSmartcardDef) def = NULL; g_autoptr(virDomainSmartcardDef) def = NULL;
g_autofree char *mode = NULL;
g_autofree char *type = NULL; g_autofree char *type = NULL;
g_autofree xmlNodePtr *certificates = NULL; g_autofree xmlNodePtr *certificates = NULL;
int n = 0; int n = 0;
@ -11611,18 +11611,9 @@ virDomainSmartcardDefParseXML(virDomainXMLOption *xmlopt,
ctxt->node = node; ctxt->node = node;
def = g_new0(virDomainSmartcardDef, 1); def = g_new0(virDomainSmartcardDef, 1);
mode = virXMLPropString(node, "mode"); if (virXMLPropEnum(node, "mode", virDomainSmartcardTypeFromString,
if (mode == NULL) { VIR_XML_PROP_REQUIRED, &def->type) < 0)
virReportError(VIR_ERR_XML_ERROR, "%s",
_("missing smartcard device mode"));
return NULL; return NULL;
}
if ((def->type = virDomainSmartcardTypeFromString(mode)) < 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown smartcard device mode: %s"),
mode);
return NULL;
}
switch (def->type) { switch (def->type) {
case VIR_DOMAIN_SMARTCARD_TYPE_HOST: case VIR_DOMAIN_SMARTCARD_TYPE_HOST:
@ -11687,9 +11678,9 @@ virDomainSmartcardDefParseXML(virDomainXMLOption *xmlopt,
break; break;
case VIR_DOMAIN_SMARTCARD_TYPE_LAST:
default: default:
virReportError(VIR_ERR_INTERNAL_ERROR, "%s", virReportEnumRangeError(virDomainSmartcardType, def->type);
_("unknown smartcard mode"));
return NULL; return NULL;
} }
@ -25406,9 +25397,9 @@ virDomainSmartcardDefFormat(virBuffer *buf,
virDomainChrSourceDefFormat(&childBuf, def->data.passthru, flags); virDomainChrSourceDefFormat(&childBuf, def->data.passthru, flags);
break; break;
case VIR_DOMAIN_SMARTCARD_TYPE_LAST:
default: default:
virReportError(VIR_ERR_INTERNAL_ERROR, virReportEnumRangeError(virDomainSmartcardType, def->type);
_("unexpected smartcard type %d"), def->type);
return -1; return -1;
} }
virDomainDeviceInfoFormat(&childBuf, &def->info, flags); virDomainDeviceInfoFormat(&childBuf, &def->info, flags);

View File

@ -1320,7 +1320,7 @@ typedef enum {
#define VIR_DOMAIN_SMARTCARD_DEFAULT_DATABASE "/etc/pki/nssdb" #define VIR_DOMAIN_SMARTCARD_DEFAULT_DATABASE "/etc/pki/nssdb"
struct _virDomainSmartcardDef { struct _virDomainSmartcardDef {
int type; /* virDomainSmartcardType */ virDomainSmartcardType type;
union { union {
/* no extra data for 'host' */ /* no extra data for 'host' */
struct { struct {

View File

@ -9146,6 +9146,7 @@ qemuBuildSmartcardCommandLine(virLogManager *logManager,
smartcard->info.alias); smartcard->info.alias);
break; break;
case VIR_DOMAIN_SMARTCARD_TYPE_LAST:
default: default:
virReportEnumRangeError(virDomainSmartcardType, smartcard->type); virReportEnumRangeError(virDomainSmartcardType, smartcard->type);
return -1; return -1;

View File

@ -2117,6 +2117,7 @@ qemuValidateDomainSmartcardDef(const virDomainSmartcardDef *def,
return -1; return -1;
break; break;
case VIR_DOMAIN_SMARTCARD_TYPE_LAST:
default: default:
virReportEnumRangeError(virDomainSmartcardType, def->type); virReportEnumRangeError(virDomainSmartcardType, def->type);
return -1; return -1;

View File

@ -2696,10 +2696,9 @@ virSecuritySELinuxRestoreSecuritySmartcardCallback(virDomainDef *def,
return virSecuritySELinuxRestoreChardevLabel(mgr, def, return virSecuritySELinuxRestoreChardevLabel(mgr, def,
dev->data.passthru, false); dev->data.passthru, false);
case VIR_DOMAIN_SMARTCARD_TYPE_LAST:
default: default:
virReportError(VIR_ERR_INTERNAL_ERROR, virReportEnumRangeError(virDomainSmartcardType, dev->type);
_("unknown smartcard type %d"),
dev->type);
return -1; return -1;
} }
@ -3103,10 +3102,9 @@ virSecuritySELinuxSetSecuritySmartcardCallback(virDomainDef *def,
return virSecuritySELinuxSetChardevLabel(mgr, def, return virSecuritySELinuxSetChardevLabel(mgr, def,
dev->data.passthru, false); dev->data.passthru, false);
case VIR_DOMAIN_SMARTCARD_TYPE_LAST:
default: default:
virReportError(VIR_ERR_INTERNAL_ERROR, virReportEnumRangeError(virDomainSmartcardType, dev->type);
_("unknown smartcard type %d"),
dev->type);
return -1; return -1;
} }