[libvirt] [PATCH] domMemoryStats / qemu: Fix parsing of unknown stats

Fix a small problem with the qemu memory stats parsing algorithm. If qemu reports a stat that libvirt does not recognize, skip past it so parsing can continue. This corrects a potential infinite loop in the parsing code that can only be triggered if new statistics are added to qemu. Signed-off-by: Adam Litke <agl@us.ibm.com> --- src/qemu/qemu_monitor_text.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) diff --git a/src/qemu/qemu_monitor_text.c b/src/qemu/qemu_monitor_text.c index 5b9ced2..87cf972 100644 --- a/src/qemu/qemu_monitor_text.c +++ b/src/qemu/qemu_monitor_text.c @@ -507,7 +507,11 @@ static int qemuMonitorParseExtraBalloonInfo(char *text, ",total_mem=", &stats[nr_stats_found])) nr_stats_found++; - /* Skip to the next label */ + /* Skip to the next label. When *p is ',' the last match attempt + * failed so try to match the next ','. + */ + if (*p == ',') + p++; p = strchr (p, ','); if (!p) break; } -- 1.6.5

On Tue, Jan 12, 2010 at 11:04:31AM -0500, Adam Litke wrote:
Fix a small problem with the qemu memory stats parsing algorithm. If qemu reports a stat that libvirt does not recognize, skip past it so parsing can continue. This corrects a potential infinite loop in the parsing code that can only be triggered if new statistics are added to qemu.
Signed-off-by: Adam Litke <agl@us.ibm.com> --- src/qemu/qemu_monitor_text.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/src/qemu/qemu_monitor_text.c b/src/qemu/qemu_monitor_text.c index 5b9ced2..87cf972 100644 --- a/src/qemu/qemu_monitor_text.c +++ b/src/qemu/qemu_monitor_text.c @@ -507,7 +507,11 @@ static int qemuMonitorParseExtraBalloonInfo(char *text, ",total_mem=", &stats[nr_stats_found])) nr_stats_found++;
- /* Skip to the next label */ + /* Skip to the next label. When *p is ',' the last match attempt + * failed so try to match the next ','. + */ + if (*p == ',') + p++; p = strchr (p, ','); if (!p) break; }
ACK Daniel -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|

On Tue, Jan 12, 2010 at 11:04:31AM -0500, Adam Litke wrote:
Fix a small problem with the qemu memory stats parsing algorithm. If qemu reports a stat that libvirt does not recognize, skip past it so parsing can continue. This corrects a potential infinite loop in the parsing code that can only be triggered if new statistics are added to qemu.
Signed-off-by: Adam Litke <agl@us.ibm.com> --- src/qemu/qemu_monitor_text.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/src/qemu/qemu_monitor_text.c b/src/qemu/qemu_monitor_text.c index 5b9ced2..87cf972 100644 --- a/src/qemu/qemu_monitor_text.c +++ b/src/qemu/qemu_monitor_text.c @@ -507,7 +507,11 @@ static int qemuMonitorParseExtraBalloonInfo(char *text, ",total_mem=", &stats[nr_stats_found])) nr_stats_found++;
- /* Skip to the next label */ + /* Skip to the next label. When *p is ',' the last match attempt + * failed so try to match the next ','. + */ + if (*p == ',') + p++; p = strchr (p, ','); if (!p) break; }
ACK, applied, thanks ! Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ daniel@veillard.com | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/
participants (3)
-
Adam Litke
-
Daniel P. Berrange
-
Daniel Veillard