From: Miloslav Trmač Date: Fri, 14 Aug 2009 19:42:19 +0000 (+0200) Subject: Mask out flags used internally for virSecretGetValue X-Git-Tag: v0.7.1~22 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ecc5c8298553248ebb0dfebe59f327ddb6fb0527;p=thirdparty%2Flibvirt.git Mask out flags used internally for virSecretGetValue Add a VIR_SECRET_GET_VALUE_INTERNAL_CALL flag value, replacing the originally separate libvirt_internal_call parameter. The flag is used to differentiate external virSecretGetValue() calls from internal calls by libvirt drivers that need to use the secret even if it is private. * src/libvirt_internal.h Remove VIR_DOMAIN_XML_FLAGS_MASK * src/driver.h Add VIR_SECRET_GET_VALUE_FLAGS_MASK constant and VIR_SECRET_GET_VALUE_INTERNAL_CALL. Re-add the VIR_DOMAIN_XML_FLAGS_MASK constant * src/libvirt.c (virSecretGetValue): Don't allow the user to specify internal flags. --- diff --git a/src/driver.h b/src/driver.h index 042c4af902..447b7a2ef0 100644 --- a/src/driver.h +++ b/src/driver.h @@ -802,6 +802,22 @@ struct _virDeviceMonitor { virDrvNodeDeviceDestroy deviceDestroy; }; +/* bits 16 and above of virDomainXMLFlags are for internal use */ +#define VIR_DOMAIN_XML_FLAGS_MASK 0xffff + +/* Bits 16 and above of virSecretGetValue flags are for internal use */ +#define VIR_SECRET_GET_VALUE_FLAGS_MASK 0xffff + +enum { + /* This getValue call is inside libvirt, override the "private" flag. + This flag can not be set by outside callers. */ + VIR_SECRET_GET_VALUE_INTERNAL_CALL = 1 << 16 +}; + +/* Make sure ... INTERNAL_CALL can not be set by the caller */ +verify((VIR_SECRET_GET_VALUE_INTERNAL_CALL & + VIR_SECRET_GET_VALUE_FLAGS_MASK) == 0); + typedef virSecretPtr (*virDrvSecretLookupByUUIDString) (virConnectPtr conn, const char *uuid); diff --git a/src/libvirt.c b/src/libvirt.c index 45619e20e1..96d204c569 100644 --- a/src/libvirt.c +++ b/src/libvirt.c @@ -9066,6 +9066,8 @@ virSecretGetValue(virSecretPtr secret, size_t *value_size, unsigned int flags) goto error; } + flags &= VIR_SECRET_GET_VALUE_FLAGS_MASK; + if (conn->secretDriver != NULL && conn->secretDriver->getValue != NULL) { unsigned char *ret; diff --git a/src/libvirt_internal.h b/src/libvirt_internal.h index 6976f34657..5913798737 100644 --- a/src/libvirt_internal.h +++ b/src/libvirt_internal.h @@ -24,9 +24,6 @@ #include "internal.h" -/* bits 16 and above of virDomainXMLFlags are for internal use */ -#define VIR_DOMAIN_XML_FLAGS_MASK 0xffff - #ifdef WITH_LIBVIRTD int virStateInitialize(int privileged); int virStateCleanup(void);