aboutsummaryrefslogtreecommitdiff
path: root/hw/display/Makefile.objs
diff options
context:
space:
mode:
authorMichal Privoznik <mprivozn@redhat.com>2018-05-17 17:00:11 +0200
committerGerd Hoffmann <kraxel@redhat.com>2018-05-18 09:01:14 +0200
commit08d9864fa4e0c616e076ca8b225d39a7ecb189af (patch)
treecbd57787dbb31a974ab3fedd70788d444a0d215c /hw/display/Makefile.objs
parenta4207e3b00e89f934adb231057dcf9a75ac2ae45 (diff)
downloadqemu-08d9864fa4e0c616e076ca8b225d39a7ecb189af.zip
qemu-08d9864fa4e0c616e076ca8b225d39a7ecb189af.tar.gz
qemu-08d9864fa4e0c616e076ca8b225d39a7ecb189af.tar.bz2
console: Avoid segfault in screendump
After f771c5440e04626f1 it is possible to select device and head which to take screendump from. And even though we check if provided head number falls within range, it may still happen that the console has no surface yet leading to SIGSEGV: qemu.git $ ./x86_64-softmmu/qemu-system-x86_64 \ -qmp stdio \ -device virtio-vga,id=video0,max_outputs=4 {"execute":"qmp_capabilities"} {"execute":"screendump", "arguments":{"filename":"/tmp/screen.ppm", "device":"video0", "head":1}} Segmentation fault #0 0x00005628249dda88 in ppm_save (filename=0x56282826cbc0 "/tmp/screen.ppm", ds=0x0, errp=0x7fff52a6fae0) at ui/console.c:304 #1 0x00005628249ddd9b in qmp_screendump (filename=0x56282826cbc0 "/tmp/screen.ppm", has_device=true, device=0x5628276902d0 "video0", has_head=true, head=1, errp=0x7fff52a6fae0) at ui/console.c:375 #2 0x00005628247740df in qmp_marshal_screendump (args=0x562828265e00, ret=0x7fff52a6fb68, errp=0x7fff52a6fb60) at qapi/qapi-commands-ui.c:110 Here, @ds from frame #0 (or @surface from frame #1) is dereferenced at the very beginning of ppm_save(). And because it's NULL crash happens. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Message-id: cb05bb1909daa6ba62145c0194aafa05a14ed3d1.1526569138.git.mprivozn@redhat.com Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'hw/display/Makefile.objs')
0 files changed, 0 insertions, 0 deletions