[libvirt] [PATCH] qemu: Avoid needless copies of static strings

Jiri Denemark jdenemar at redhat.com
Thu Jun 30 08:03:24 UTC 2016


Signed-off-by: Jiri Denemark <jdenemar at redhat.com>
---
 src/qemu/qemu_hotplug.c | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
index bf6430d..f88520f 100644
--- a/src/qemu/qemu_hotplug.c
+++ b/src/qemu/qemu_hotplug.c
@@ -3931,7 +3931,8 @@ qemuDomainChangeGraphicsPasswords(virQEMUDriverPtr driver,
 {
     qemuDomainObjPrivatePtr priv = vm->privateData;
     time_t now = time(NULL);
-    char expire_time [64];
+    const char *expire;
+    char *validTo = NULL;
     const char *connected = NULL;
     const char *password;
     int ret = -1;
@@ -3962,19 +3963,18 @@ qemuDomainChangeGraphicsPasswords(virQEMUDriverPtr driver,
     if (ret != 0)
         goto end_job;
 
-    if (password[0] == '\0') {
-        snprintf(expire_time, sizeof(expire_time), "now");
+    if (password[0] == '\0' ||
+        (auth->expires && auth->validTo <= now)) {
+        expire = "now";
     } else if (auth->expires) {
-        time_t lifetime = auth->validTo - now;
-        if (lifetime <= 0)
-            snprintf(expire_time, sizeof(expire_time), "now");
-        else
-            snprintf(expire_time, sizeof(expire_time), "%lu", (long unsigned)auth->validTo);
+        if (virAsprintf(&validTo, "%lu", (unsigned long) auth->validTo) < 0)
+            goto end_job;
+        expire = validTo;
     } else {
-        snprintf(expire_time, sizeof(expire_time), "never");
+        expire = "never";
     }
 
-    ret = qemuMonitorExpirePassword(priv->mon, type, expire_time);
+    ret = qemuMonitorExpirePassword(priv->mon, type, expire);
 
     if (ret == -2) {
         /* XXX we could fake this with a timer */
@@ -3991,6 +3991,7 @@ qemuDomainChangeGraphicsPasswords(virQEMUDriverPtr driver,
     if (qemuDomainObjExitMonitor(driver, vm) < 0)
         ret = -1;
  cleanup:
+    VIR_FREE(validTo);
     virObjectUnref(cfg);
     return ret;
 }
-- 
2.9.0




More information about the libvir-list mailing list