]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu.conf: fill out TLS verify attributes after parsing
authorJán Tomko <jtomko@redhat.com>
Mon, 14 Jan 2019 21:51:00 +0000 (22:51 +0100)
committerJán Tomko <jtomko@redhat.com>
Thu, 17 Jan 2019 14:53:20 +0000 (15:53 +0100)
Introduce a set of bool variables with the 'present' suffix
to track whether the value was actually specified.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
src/qemu/qemu_conf.c
src/qemu/qemu_conf.h
src/qemu/qemu_driver.c

index b03e38b83101a84bbe0a2702c583e8b0a082d9a5..e0dd7cd02429650004debd56b38ef638fa984b5c 100644 (file)
@@ -535,8 +535,8 @@ int virQEMUDriverConfigLoadFile(virQEMUDriverConfigPtr cfg,
         goto cleanup;
     if ((rv = virConfGetValueBool(conf, "vnc_tls_x509_verify", &cfg->vncTLSx509verify)) < 0)
         goto cleanup;
-    if (rv == 0)
-        cfg->vncTLSx509verify = cfg->defaultTLSx509verify;
+    if (rv == 1)
+        cfg->vncTLSx509verifyPresent = true;
     if (virConfGetValueString(conf, "vnc_tls_x509_cert_dir", &cfg->vncTLSx509certdir) < 0)
         goto cleanup;
     if (virConfGetValueString(conf, "vnc_listen", &cfg->vncListen) < 0)
@@ -601,8 +601,8 @@ int virQEMUDriverConfigLoadFile(virQEMUDriverConfigPtr cfg,
         if ((rv = virConfGetValueBool(conf, #val "_tls_x509_verify", \
                                       &cfg->val## TLSx509verify)) < 0) \
             goto cleanup; \
-        if (rv == 0) \
-            cfg->val## TLSx509verify = cfg->defaultTLSx509verify; \
+        if (rv == 1) \
+            cfg->val## TLSx509verifyPresent = true; \
         if ((rv = virConfGetValueString(conf, #val "_tls_x509_cert_dir", \
                                   &cfg->val## TLSx509certdir)) < 0) \
             goto cleanup; \
@@ -1056,6 +1056,28 @@ virQEMUDriverConfigValidate(virQEMUDriverConfigPtr cfg)
 }
 
 
+int
+virQEMUDriverConfigSetDefaults(virQEMUDriverConfigPtr cfg)
+{
+    int ret = -1;
+
+#define SET_TLS_VERIFY_DEFAULT(val) \
+    do { \
+        if (!cfg->val## TLSx509verifyPresent) \
+            cfg->val## TLSx509verify = cfg->defaultTLSx509verify; \
+    } while (0)
+
+    SET_TLS_VERIFY_DEFAULT(vnc);
+    SET_TLS_VERIFY_DEFAULT(chardev);
+    SET_TLS_VERIFY_DEFAULT(migrate);
+
+#undef SET_TLS_VERIFY_DEFAULT
+
+    ret = 0;
+    return ret;
+}
+
+
 virQEMUDriverConfigPtr virQEMUDriverGetConfig(virQEMUDriverPtr driver)
 {
     virQEMUDriverConfigPtr conf;
index 1013cfcaed75d1c753a1eeef07a99af014e73ae0..87e730058bd21839c5671f8d8197f83eebdbdd03 100644 (file)
@@ -122,6 +122,7 @@ struct _virQEMUDriverConfig {
     bool vncAutoUnixSocket;
     bool vncTLS;
     bool vncTLSx509verify;
+    bool vncTLSx509verifyPresent;
     bool vncSASL;
     char *vncTLSx509certdir;
     char *vncListen;
@@ -139,10 +140,12 @@ struct _virQEMUDriverConfig {
     bool chardevTLS;
     char *chardevTLSx509certdir;
     bool chardevTLSx509verify;
+    bool chardevTLSx509verifyPresent;
     char *chardevTLSx509secretUUID;
 
     char *migrateTLSx509certdir;
     bool migrateTLSx509verify;
+    bool migrateTLSx509verifyPresent;
     char *migrateTLSx509secretUUID;
 
     unsigned int remotePortMin;
@@ -317,6 +320,9 @@ int virQEMUDriverConfigLoadFile(virQEMUDriverConfigPtr cfg,
 int
 virQEMUDriverConfigValidate(virQEMUDriverConfigPtr cfg);
 
+int
+virQEMUDriverConfigSetDefaults(virQEMUDriverConfigPtr cfg);
+
 virQEMUDriverConfigPtr virQEMUDriverGetConfig(virQEMUDriverPtr driver);
 bool virQEMUDriverIsPrivileged(virQEMUDriverPtr driver);
 
index 1d961707cc393508a2411114b2814a337a807020..5032edec50f97aae3d147b91dd854975b732cd6f 100644 (file)
@@ -628,6 +628,9 @@ qemuStateInitialize(bool privileged,
     if (virQEMUDriverConfigValidate(cfg) < 0)
         goto error;
 
+    if (virQEMUDriverConfigSetDefaults(cfg) < 0)
+        goto error;
+
     if (virFileMakePath(cfg->stateDir) < 0) {
         virReportSystemError(errno, _("Failed to create state dir %s"),
                              cfg->stateDir);