On 10/15/18 6:52 AM, Markus Armbruster wrote:
Calling error_report() in a function that takes an Error ** argument
is suspicious.  9p-handle.c's handle_parse_opts() does that, and then
fails without setting an error.  Wrong.  Its caller crashes when it
tries to report the error:

     $ qemu-system-x86_64 -nodefaults -fsdev id=foo,fsdriver=handle
     qemu-system-x86_64: -fsdev id=foo,fsdriver=handle: warning: handle backend 
is deprecated
     qemu-system-x86_64: -fsdev id=foo,fsdriver=handle: fsdev: No path specified
     Segmentation fault (core dumped)

Screwed up when commit 91cda4e8f37 (v2.12.0) converted the function to
Error.  Fix by calling error_setg() instead of error_report().

Fixes: 91cda4e8f372602795e3a2f4bd2e3adaf9f82255
Cc: Greg Kurz <[email protected]>
Signed-off-by: Markus Armbruster <[email protected]>
Acked-by: Greg Kurz <[email protected]>
---
  hw/9pfs/9p-handle.c | 6 ++++--
  1 file changed, 4 insertions(+), 2 deletions(-)

Reviewed-by: Eric Blake <[email protected]>


--
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org

Reply via email to