From: Michal Privoznik Date: Wed, 14 Aug 2019 12:41:42 +0000 (+0200) Subject: remote_daemon_dispatch.c: typecast ARRAY_CARDINALITY() in remoteDispatchProbeURI() X-Git-Tag: v5.7.0-rc1~222 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3b7c5ab983f4655ae02b8af4517d89839530ee5f;p=thirdparty%2Flibvirt.git remote_daemon_dispatch.c: typecast ARRAY_CARDINALITY() in remoteDispatchProbeURI() Since users can enable/disable drivers at compile time, it may happen that @drivers array is in fact empty (in both its occurrences within the function). This means that ARRAY_CARDINALITY() returns 0UL which makes gcc unhappy because of loop condition: i < ARRAY_CARDINALITY(drivers) GCC complains that @i is unsigned and comparing an unsigned value against 0 is always false. However, changing the type of @i to ssize_t is not enough, because compiler still sees the unsigned zero. The solution is to typecast the ARRAY_CARDINALITY(). Signed-off-by: Michal Privoznik Reviewed-by: Jim Fehlig --- diff --git a/src/remote/remote_daemon_dispatch.c b/src/remote/remote_daemon_dispatch.c index c8e353ebd3..1bd281dd6d 100644 --- a/src/remote/remote_daemon_dispatch.c +++ b/src/remote/remote_daemon_dispatch.c @@ -2141,9 +2141,9 @@ remoteDispatchProbeURI(bool readonly, "vbox", # endif }; - size_t i; + ssize_t i; - for (i = 0; i < ARRAY_CARDINALITY(drivers) && !*probeduri; i++) { + for (i = 0; i < (ssize_t) ARRAY_CARDINALITY(drivers) && !*probeduri; i++) { VIR_AUTOFREE(char *) daemonname = NULL; VIR_AUTOFREE(char *) daemonpath = NULL; @@ -2187,9 +2187,9 @@ remoteDispatchProbeURI(bool readonly, "vz", # endif }; - size_t i; + ssize_t i; - for (i = 0; i < ARRAY_CARDINALITY(drivers) && !*probeduri; i++) { + for (i = 0; i < (ssize_t) ARRAY_CARDINALITY(drivers) && !*probeduri; i++) { VIR_AUTOFREE(char *) sockname = NULL; if (virAsprintf(&sockname, "%s/run/libvirt/virt%sd-%s",