]> git.proxmox.com Git - mirror_qemu.git/commit - qobject/qjson.c
qobject: qobject_from_jsonv() is dangerous, hide it away
authorMarkus Armbruster <armbru@redhat.com>
Mon, 6 Aug 2018 06:53:31 +0000 (08:53 +0200)
committerMarkus Armbruster <armbru@redhat.com>
Thu, 16 Aug 2018 06:42:06 +0000 (08:42 +0200)
commit2d36e843042d2ef47f3bfc47a1a83401fdb07b84
treecf0c271134caf76933cb959864404f46e6695341
parenteac78bd430f357b9d935afaa09355c6fc6a13e3d
qobject: qobject_from_jsonv() is dangerous, hide it away

qobject_from_jsonv() takes ownership of %p arguments.  On failure, we
can't generally know whether we failed before or after %p, so
ownership becomes indeterminate.  To avoid leaks, callers passing %p
must terminate on error, e.g. by passing &error_abort.  Trap for the
unwary; document and give the function internal linkage.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <20180806065344.7103-11-armbru@redhat.com>
include/qapi/qmp/qjson.h
qobject/qjson.c