On 07.12.2016 14:20, John Ferlan wrote:
If the 'nleases < 0' on return, then the subsequent call
to
findLeaseInJSON will not produce the expected results (passed
in as a size_t, but nleases is a ssize_t). So check if the
returned value < 0 and if so, goto cleanup.
Found by Coverity as a NEGATIVE_RETURNS event
Signed-off-by: John Ferlan <jferlan(a)redhat.com>
---
tools/nss/libvirt_nss.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/tools/nss/libvirt_nss.c b/tools/nss/libvirt_nss.c
index 418c11f..b69e62c 100644
--- a/tools/nss/libvirt_nss.c
+++ b/tools/nss/libvirt_nss.c
@@ -309,7 +309,8 @@ findLease(const char *name,
}
VIR_DIR_CLOSE(dir);
- nleases = virJSONValueArraySize(leases_array);
+ if ((nleases = virJSONValueArraySize(leases_array)) < 0)
+ goto cleanup;
DEBUG("Read %zd leases", nleases);
Well, this one could happen iff @leases_array wouldn't be a JSON array.
Thus I'm okay with skipping DEBUG() in that case.
Michal