'qemuDomainGetGuestInfoCheckSupport' despite it's name was not checking
whether the info types are supported. Convert the function to return
integers and include the check.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
src/qemu/qemu_driver.c | 30 ++++++++++++++++++++++--------
1 file changed, 22 insertions(+), 8 deletions(-)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 241513705d..f9a4cc2758 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -22744,20 +22744,32 @@ qemuDomainGetLaunchSecurityInfo(virDomainPtr domain,
return ret;
}
-static const unsigned int supportedGuestInfoTypes =
+static const unsigned int qemuDomainGetGuestInfoSupportedTypes =
VIR_DOMAIN_GUEST_INFO_USERS |
VIR_DOMAIN_GUEST_INFO_OS |
VIR_DOMAIN_GUEST_INFO_TIMEZONE |
VIR_DOMAIN_GUEST_INFO_HOSTNAME |
VIR_DOMAIN_GUEST_INFO_FILESYSTEM;
-static void
-qemuDomainGetGuestInfoCheckSupport(unsigned int *types)
+static int
+qemuDomainGetGuestInfoCheckSupport(unsigned int types,
+ unsigned int *supportedTypes)
{
- if (*types == 0)
- *types = supportedGuestInfoTypes;
+ if (types == 0) {
+ *supportedTypes = qemuDomainGetGuestInfoSupportedTypes;
+ return 0;
+ }
+
+ *supportedTypes = types & qemuDomainGetGuestInfoSupportedTypes;
+
+ if (types != *supportedTypes) {
+ virReportError(VIR_ERR_INVALID_ARG,
+ _("unsupported guest information types
'0x%x'"),
+ types & ~qemuDomainGetGuestInfoSupportedTypes);
+ return -1;
+ }
- *types = *types & supportedGuestInfoTypes;
+ return 0;
}
static void
@@ -22863,14 +22875,16 @@ qemuDomainGetGuestInfo(virDomainPtr dom,
int ret = -1;
int maxparams = 0;
g_autofree char *hostname = NULL;
- unsigned int supportedTypes = types;
+ unsigned int supportedTypes;
int rc;
size_t nfs = 0;
qemuAgentFSInfoPtr *agentfsinfo = NULL;
size_t i;
virCheckFlags(0, -1);
- qemuDomainGetGuestInfoCheckSupport(&supportedTypes);
+
+ if (qemuDomainGetGuestInfoCheckSupport(types, &supportedTypes) < 0)
+ return -1;
if (!(vm = qemuDomainObjFromDomain(dom)))
goto cleanup;
--
2.24.1