qemu/scripts
Michael Roth cee2dedb85 qapi: add visit_start_union and visit_end_union
In some cases an input visitor might bail out on filling out a
struct for various reasons, such as missing fields when running
in strict mode. In the case of a QAPI Union type, this may lead
to cases where the .kind field which encodes the union type
is uninitialized. Subsequently, other visitors, such as the
dealloc visitor, may use this .kind value as if it were
initialized, leading to assumptions about the union type which
in this case may lead to segfaults. For example, freeing an
integer value.

However, we can generally rely on the fact that the always-present
.data void * field that we generate for these union types will
always be NULL in cases where .kind is uninitialized (at least,
there shouldn't be a reason where we'd do this purposefully).

So pass this information on to Visitor implementation via these
optional start_union/end_union interfaces so this information
can be used to guard against the situation above. We will make
use of this information in a subsequent patch for the dealloc
visitor.

Cc: qemu-stable@nongnu.org
Reported-by: Fam Zheng <famz@redhat.com>
Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
2014-09-26 13:14:10 -04:00
..
kvm kvm_stat: allow choosing between tracepoints and old stats 2014-05-21 17:56:37 +02:00
qemu-guest-agent qemu-ga: sample fsfreeze hooks 2013-01-08 16:38:12 -06:00
qmp qmp: Check for returned data from __json_read in get_events 2014-02-28 13:35:53 -05:00
tracetool scripts/tracetool: don't barf on formats with precision 2014-09-26 09:34:39 +01:00
acpi_extract_preprocess.py i386: add ACPI table files from seabios 2013-10-14 17:48:51 +03:00
acpi_extract.py i386: add ACPI table files from seabios 2013-10-14 17:48:51 +03:00
analyse-9p-simpletrace.py scripts/analyse-9p-simpletrace.py: Add symbolic names for 9p operations. 2011-12-21 12:37:23 +05:30
check-qerror.sh qerror: add check-qerror.sh to verify alphabetical order 2012-01-18 10:23:39 -02:00
checkpatch.pl checkpatch.pl: adjust typedef definition to QEMU coding style 2014-08-26 13:44:28 +02:00
cleanup-trace-events.pl cleanup-trace-events.pl: Tighten search for trace event call 2014-09-26 09:34:38 +01:00
coverity-model.c scripts: add sample model file for Coverity Scan 2014-04-18 10:33:36 +04:00
create_config module: implement module loading 2014-02-20 13:14:18 +01:00
disas-objdump.pl disas-objdump: Pass --adjust-vma to objdump 2013-08-24 07:26:45 +02:00
dump-guest-memory.py Python-lang gdb script to extract x86_64 guest vmcore from qemu coredump 2014-01-26 13:06:48 +02:00
extract-vsssdk-headers Add a script to extract VSS SDK headers on POSIX system 2013-09-09 14:17:56 -05:00
feature_to_c.sh exec: move include files to include/exec/ 2012-12-19 08:31:31 +01:00
get_maintainer.pl Use qemu-project.org domain name 2013-10-11 09:34:56 -07:00
gtester-cat test makefile overhaul 2012-03-30 08:14:11 -05:00
hxtool vl.c: In qemu -h output, only print options for the arch we are running as 2011-12-19 10:27:33 -06:00
make_device_config.sh make_device_config.sh: Emit dependency file to directory where included 2013-03-09 12:00:03 +00:00
make-release make-release: Record SeaBIOS version 2014-03-31 15:02:04 +01:00
ordereddict.py qapi: add ordereddict.py helper library 2011-07-21 16:48:14 -03:00
qapi-commands.py qapi: Suppress unwanted space between type and identifier 2014-06-23 11:01:24 -04:00
qapi-event.py qapi script: clean up in scripts 2014-06-27 09:27:56 -04:00
qapi-types.py qapi: Allow enums in anonymous unions 2014-09-22 11:39:33 +01:00
qapi-visit.py qapi: add visit_start_union and visit_end_union 2014-09-26 13:14:10 -04:00
qapi.py qapi.py: avoid Python 2.5+ any() function 2014-08-28 13:42:25 +01:00
qemu-binfmt-conf.sh scripts/qemu-binfmt-conf.sh: Add AArch64 registration 2014-03-17 16:31:53 +00:00
qemu-gdb.py scripts: add gdb support script 2012-03-24 12:57:02 +00:00
refresh-pxe-roms.sh roms: rewrite scripts/refresh-pxe-roms.sh 2013-09-30 09:44:35 +02:00
signrom.py signrom: Rewrite as python script 2012-04-16 15:41:20 +02:00
simpletrace.py simpletrace: add simpletrace.py --no-header option 2014-08-12 14:26:11 +01:00
switch-timer-api misc: Fix case Qemu -> QEMU 2014-02-15 16:10:25 +04:00
texi2pod.pl Support utf8 chars in pod docs 2012-03-24 14:10:25 +00:00
tracetool.py trace: Multi-backend tracing 2014-06-09 15:43:40 +02:00
update-acpi.sh acpi: add rules to compile ASL source 2013-10-14 17:48:51 +03:00
update-linux-headers.sh linux-headers: include psci.h 2014-06-16 13:24:41 +02:00
vmstate-static-checker.py checker: ignore fields marked unused 2014-08-04 15:02:37 +05:30