From 7db19366423dcab388907c12caf766c6e5870d00 Mon Sep 17 00:00:00 2001 From: Jincheng Miao Date: Mon, 22 Sep 2014 18:14:27 +0800 Subject: [PATCH] nodeinfo: report error when given node is out of range https://bugzilla.redhat.com/show_bug.cgi?id=1145050 Signed-off-by: Jincheng Miao Signed-off-by: Michal Privoznik --- src/nodeinfo.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/nodeinfo.c b/src/nodeinfo.c index af23b8b2fb..1b4a8d7d2f 100644 --- a/src/nodeinfo.c +++ b/src/nodeinfo.c @@ -2028,10 +2028,24 @@ nodeGetFreePages(unsigned int npages, unsigned long long *counts) { int ret = -1; - int cell; + int cell, lastCell; size_t i, ncounts = 0; - for (cell = startCell; cell < (int) (startCell + cellCount); cell++) { + if ((lastCell = virNumaGetMaxNode()) < 0) + return 0; + + if (startCell > lastCell) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("start cell %d out of range (0-%d)"), + startCell, lastCell); + goto cleanup; + } + + lastCell = startCell + cellCount; + if (startCell + cellCount < lastCell) + lastCell = startCell + cellCount; + + for (cell = startCell; cell < lastCell; cell++) { for (i = 0; i < npages; i++) { unsigned int page_size = pages[i]; unsigned int page_free; -- 2.47.2