From df757e88fdb26e64e6b5a5c786e6f59d1d9b130a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A1n=20Tomko?= Date: Mon, 11 Apr 2022 09:30:12 +0200 Subject: [PATCH] virsh: fix event registration for single event MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Reviewed-by: Michal Privoznik --- tools/virsh-domain-event.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/tools/virsh-domain-event.c b/tools/virsh-domain-event.c index 1a2f1cb6e0..6dbb64a655 100644 --- a/tools/virsh-domain-event.c +++ b/tools/virsh-domain-event.c @@ -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++; }