]> xenbits.xensource.com Git - libvirt.git/commitdiff
virsh: fix event registration for single event
authorJán Tomko <jtomko@redhat.com>
Mon, 11 Apr 2022 07:30:12 +0000 (09:30 +0200)
committerJán Tomko <jtomko@redhat.com>
Mon, 11 Apr 2022 15:03:49 +0000 (17:03 +0200)
Allocate a larger 'data' array than strictly needed
for simplicity and use 'ndata' as the index when
filling it to put the single event at the first unused
place, instead of at its index in the virshDomainEventCallbacks
array.

https://bugzilla.redhat.com/show_bug.cgi?id=2073887

Fixes: c6bb2746933bbe65877a5f8a8d60e100b0bf8a59
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
tools/virsh-domain-event.c

index 1a2f1cb6e05e5de965ac12cd035a8256f7f9d6b9..6dbb64a6557ac1cf4324f15cc1a6aeb8769e7094 100644 (file)
@@ -915,23 +915,20 @@ cmdEvent(vshControl *ctl, const vshCmd *cmd)
         return false;
     }
 
-    if (eventName)
-        data = g_new0(virshDomEventData, 1);
-    else
-        data = g_new0(virshDomEventData, G_N_ELEMENTS(virshDomainEventCallbacks));
+    data = g_new0(virshDomEventData, G_N_ELEMENTS(virshDomainEventCallbacks));
 
     for (i = 0; i < G_N_ELEMENTS(virshDomainEventCallbacks); i++) {
         if (eventName &&
             STRNEQ(eventName, virshDomainEventCallbacks[i].name))
             continue;
 
-        data[i].event = i;
-        data[i].ctl = ctl;
-        data[i].loop = loop;
-        data[i].count = &count;
-        data[i].timestamp = timestamp;
-        data[i].cb = &virshDomainEventCallbacks[i];
-        data[i].id = -1;
+        data[ndata].event = i;
+        data[ndata].ctl = ctl;
+        data[ndata].loop = loop;
+        data[ndata].count = &count;
+        data[ndata].timestamp = timestamp;
+        data[ndata].cb = &virshDomainEventCallbacks[i];
+        data[ndata].id = -1;
         ndata++;
     }