[libvirt] [PATCH] Fix invalid write in virNumaGetDistances

Ján Tomko jtomko at redhat.com
Mon Jun 23 09:53:25 UTC 2014


==== Invalid write of size 4
====    at 0x52E678C: virNumaGetDistances (virnuma.c:479)
====    by 0x5396890: nodeCapsInitNUMA (nodeinfo.c:1796)
====    by 0x203C2B: virQEMUCapsInit (qemu_capabilities.c:960)
====  Address 0xe10a1e0 is 0 bytes after a block of size 0 alloc'd
====    at 0x4C2A6D0: calloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
====    by 0x52A10D6: virAllocN (viralloc.c:191)
====    by 0x52E674D: virNumaGetDistances (virnuma.c:470)
====    by 0x5396890: nodeCapsInitNUMA (nodeinfo.c:1796)
====    by 0x203C2B: virQEMUCapsInit (qemu_capabilities.c:960)
---
 src/util/virnuma.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/util/virnuma.c b/src/util/virnuma.c
index c8e7f40..c494e17 100644
--- a/src/util/virnuma.c
+++ b/src/util/virnuma.c
@@ -467,7 +467,7 @@ virNumaGetDistances(int node,
     if ((max_node = virNumaGetMaxNode()) < 0)
         goto cleanup;
 
-    if (VIR_ALLOC_N(*distances, max_node) < 0)
+    if (VIR_ALLOC_N(*distances, max_node + 1) < 0)
         goto cleanup;
 
     *ndistances = max_node + 1;
-- 
1.8.5.5




More information about the libvir-list mailing list