virCHMonitorGetIOThreads returns an int, not size_t.
Also return early if it's negative, because promoting it to
an unsigned type in the for loop condition could lead to
an infinte loop.
Signed-off-by: Ján Tomko <jtomko(a)redhat.com>
---
src/ch/ch_process.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/ch/ch_process.c b/src/ch/ch_process.c
index 414e203154..e4313d1008 100644
--- a/src/ch/ch_process.c
+++ b/src/ch/ch_process.c
@@ -327,9 +327,11 @@ virCHProcessSetupIOThreads(virDomainObj *vm)
virCHDomainObjPrivate *priv = vm->privateData;
virDomainIOThreadInfo **iothreads = NULL;
size_t i;
- size_t niothreads;
+ int niothreads;
+
+ if ((niothreads = virCHMonitorGetIOThreads(priv->monitor, &iothreads)) <
0)
+ return -1;
- niothreads = virCHMonitorGetIOThreads(priv->monitor, &iothreads);
for (i = 0; i < niothreads; i++) {
VIR_DEBUG("IOThread index = %ld , tid = %d", i,
iothreads[i]->iothread_id);
if (virCHProcessSetupIOThread(vm, iothreads[i]) < 0)
--
2.34.1