From: Jincheng Miao Date: Mon, 22 Sep 2014 10:14:27 +0000 (+0800) Subject: nodeinfo: report error when given node is out of range X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=7db19366423dcab388907c12caf766c6e5870d00;p=libvirt.git 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 --- 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;