The QEMU memory stats JSON monitor command was too cautious in
checking array bounds, dropping the last requested stat

* src/qemu/qemu_monitor_json.c: Fix off-by-1 check in memory
  stats
---
 src/qemu/qemu_monitor_json.c |   12 ++++++------
 1 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
index 7c0d372..3c97e9d 100644
--- a/src/qemu/qemu_monitor_json.c
+++ b/src/qemu/qemu_monitor_json.c
@@ -965,7 +965,7 @@ int qemuMonitorJSONGetMemoryStats(qemuMonitorPtr mon,
                 goto cleanup;
             }
 
-            if (virJSONValueObjectHasKey(data, "mem_swapped_in") && (got < 
(nr_stats-1))) {
+            if (virJSONValueObjectHasKey(data, "mem_swapped_in") && (got < 
nr_stats)) {
                 if (virJSONValueObjectGetNumberUlong(data, "mem_swapped_in", 
&mem) < 0) {
                     qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                                     _("info balloon reply was missing balloon 
mem_swapped_in"));
@@ -976,7 +976,7 @@ int qemuMonitorJSONGetMemoryStats(qemuMonitorPtr mon,
                 stats[got].val = (mem/1024);
                 got++;
             }
-            if (virJSONValueObjectHasKey(data, "mem_swapped_out") && (got < 
(nr_stats-1))) {
+            if (virJSONValueObjectHasKey(data, "mem_swapped_out") && (got < 
nr_stats)) {
                 if (virJSONValueObjectGetNumberUlong(data, "mem_swapped_out", 
&mem) < 0) {
                     qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                                     _("info balloon reply was missing balloon 
mem_swapped_out"));
@@ -987,7 +987,7 @@ int qemuMonitorJSONGetMemoryStats(qemuMonitorPtr mon,
                 stats[got].val = (mem/1024);
                 got++;
             }
-            if (virJSONValueObjectHasKey(data, "major_page_faults") && (got < 
(nr_stats-1))) {
+            if (virJSONValueObjectHasKey(data, "major_page_faults") && (got < 
nr_stats)) {
                 if (virJSONValueObjectGetNumberUlong(data, 
"major_page_faults", &mem) < 0) {
                     qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                                     _("info balloon reply was missing balloon 
major_page_faults"));
@@ -998,7 +998,7 @@ int qemuMonitorJSONGetMemoryStats(qemuMonitorPtr mon,
                 stats[got].val = mem;
                 got++;
             }
-            if (virJSONValueObjectHasKey(data, "minor_page_faults") && (got < 
(nr_stats-1))) {
+            if (virJSONValueObjectHasKey(data, "minor_page_faults") && (got < 
nr_stats)) {
                 if (virJSONValueObjectGetNumberUlong(data, 
"minor_page_faults", &mem) < 0) {
                     qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                                     _("info balloon reply was missing balloon 
minor_page_faults"));
@@ -1009,7 +1009,7 @@ int qemuMonitorJSONGetMemoryStats(qemuMonitorPtr mon,
                 stats[got].val = mem;
                 got++;
             }
-            if (virJSONValueObjectHasKey(data, "free_mem") && (got < 
(nr_stats-1))) {
+            if (virJSONValueObjectHasKey(data, "free_mem") && (got < 
nr_stats)) {
                 if (virJSONValueObjectGetNumberUlong(data, "free_mem", &mem) < 
0) {
                     qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                                     _("info balloon reply was missing balloon 
free_mem"));
@@ -1020,7 +1020,7 @@ int qemuMonitorJSONGetMemoryStats(qemuMonitorPtr mon,
                 stats[got].val = (mem/1024);
                 got++;
             }
-            if (virJSONValueObjectHasKey(data, "total_mem") && (got < 
(nr_stats-1))) {
+            if (virJSONValueObjectHasKey(data, "total_mem") && (got < 
nr_stats)) {
                 if (virJSONValueObjectGetNumberUlong(data, "total_mem", &mem) 
< 0) {
                     qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                                     _("info balloon reply was missing balloon 
total_mem"));
-- 
1.6.6.1

--
libvir-list mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to