]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
virPolkitCheckAuth: Avoid virStringListLength in loop condition
authorPeter Krempa <pkrempa@redhat.com>
Fri, 5 Feb 2021 16:53:05 +0000 (17:53 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Thu, 11 Feb 2021 16:05:34 +0000 (17:05 +0100)
Don't re-calculate the string list length on every iteration. Convert
the loop to NULL-terminated iteration.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/util/virpolkit.c

index 1d6be443f748d18964586dd87f407cf7ab94b971..c657c4568119921d5c71ad9829c1cb32bf1ef74c 100644 (file)
@@ -75,7 +75,7 @@ int virPolkitCheckAuth(const char *actionid,
     gboolean is_authorized;
     gboolean is_challenge;
     bool is_dismissed = false;
-    size_t i;
+    const char **next;
 
     if (!(sysbus = virGDBusGetSystemBus()))
         return -1;
@@ -90,8 +90,15 @@ int virPolkitCheckAuth(const char *actionid,
     gprocess = g_variant_builder_end(&builder);
 
     g_variant_builder_init(&builder, G_VARIANT_TYPE("a{ss}"));
-    for (i = 0; i < virStringListLength(details); i += 2)
-        g_variant_builder_add(&builder, "{ss}", details[i], details[i + 1]);
+
+    if (details) {
+        for (next = details; *next; next++) {
+            const char *detail1 = *(next++);
+            const char *detail2 = *next;
+            g_variant_builder_add(&builder, "{ss}", detail1, detail2);
+        }
+    }
+
     gdetails = g_variant_builder_end(&builder);
 
     message = g_variant_new("((s@a{sv})s@a{ss}us)",