[libvirt] [PATCH] qemuMonitorTextGetMemoryStats: decrease risk of false positive in parsing

Daniel Veillard veillard at redhat.com
Fri Mar 5 14:39:47 UTC 2010


On Fri, Mar 05, 2010 at 03:29:56PM +0100, Jim Meyering wrote:
> Not urgent.
> 
> This was highlighted by clang as a dead store, since
> the first result stored in "offset" was never used.
> But if "info balloon" were ever to print some introductory
> text (containing a comma) before the balloon: actual... line,
> the bug would have made a difference.
> 
> 
> >From c81c6af87f20740a6b75652937ec8346f8bf59e3 Mon Sep 17 00:00:00 2001
> From: Jim Meyering <meyering at redhat.com>
> Date: Fri, 5 Mar 2010 15:25:48 +0100
> Subject: [PATCH] qemuMonitorTextGetMemoryStats: decrease risk of false positive in parsing
> 
> The code erroneously searched the entire "reply" for a comma, when
> its intent was to search only that portion after "balloon: actual="
> * src/qemu/qemu_monitor_text.c (qemuMonitorTextGetMemoryStats):
> Search for "," only starting *after* the BALLOON_PREFIX string.
> Otherwise, we'd be more prone to false positives.
> ---
>  src/qemu/qemu_monitor_text.c |    3 ++-
>  1 files changed, 2 insertions(+), 1 deletions(-)
> 
> diff --git a/src/qemu/qemu_monitor_text.c b/src/qemu/qemu_monitor_text.c
> index 7f0e7f6..e629c6b 100644
> --- a/src/qemu/qemu_monitor_text.c
> +++ b/src/qemu/qemu_monitor_text.c
> @@ -593,7 +593,8 @@ int qemuMonitorTextGetMemoryStats(qemuMonitorPtr mon,
>      }
> 
>      if ((offset = strstr(reply, BALLOON_PREFIX)) != NULL) {
> -        if ((offset = strchr(reply, ',')) != NULL) {
> +        offset += strlen(BALLOON_PREFIX);
> +        if ((offset = strchr(offset, ',')) != NULL) {
>              ret = qemuMonitorParseExtraBalloonInfo(offset, stats, nr_stats);
>          }
>      }

  Right, it 'works' because BALLOON_PREFIX doesn't have a comma, but
the patch makes the code consistent and more reliable,

  ACK,

Daniel

-- 
Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
daniel at veillard.com  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/




More information about the libvir-list mailing list