qga: Fix qmp_guest_get_memory_blocks() error handling
commit4155c998b6f7618aad0e67c34c2a4aea841114cf
authorMarkus Armbruster <armbru@redhat.com>
Wed, 22 Apr 2020 13:07:18 +0000 (22 15:07 +0200)
committerMarkus Armbruster <armbru@redhat.com>
Wed, 29 Apr 2020 06:01:52 +0000 (29 08:01 +0200)
tree9c03c0f983eb949da975844a05c725eb9dcf143b
parent131889924bb31a6a371ed9300efb2036edd6b40b
qga: Fix qmp_guest_get_memory_blocks() error handling

The Error ** argument must be NULL, &error_abort, &error_fatal, or a
pointer to a variable containing NULL.  Passing an argument of the
latter kind twice without clearing it in between is wrong: if the
first call sets an error, it no longer points to NULL for the second
call.

qmp_guest_get_memory_blocks() passes &local_err to
transfer_memory_block() in a loop.  If this fails in more than one
iteration, it can trip error_setv()'s assertion.

Fix it to break the loop.

Cc: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20200422130719.28225-14-armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
qga/commands-posix.c