From b79239a41bffffbbe4ed412acd191c75ef605cc0 Mon Sep 17 00:00:00 2001 From: Lin Ma Date: Wed, 14 Sep 2016 14:22:50 +0800 Subject: qemu-char: avoid segfault if user lacks of permisson of a given logfile Function qemu_chr_alloc returns NULL if it failed to open logfile by any reason, says no write permission. For backends tty, stdio and msmouse, They need to check this return value to avoid segfault in this case. Signed-off-by: Lin Ma Cc: qemu-stable Message-Id: <20160914062250.22226-1-lma@suse.com> Signed-off-by: Paolo Bonzini (cherry picked from commit 71200fb9664c2967a1cdd22b68b0da3a8b2b3eb7) Signed-off-by: Michael Roth --- qemu-char.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/qemu-char.c b/qemu-char.c index b597ee19ca..05d602bba8 100644 --- a/qemu-char.c +++ b/qemu-char.c @@ -1217,6 +1217,9 @@ static CharDriverState *qemu_chr_open_stdio(const char *id, sigaction(SIGCONT, &act, NULL); chr = qemu_chr_open_fd(0, 1, common, errp); + if (!chr) { + return NULL; + } chr->chr_close = qemu_chr_close_stdio; chr->chr_set_echo = qemu_chr_set_echo_stdio; if (opts->has_signal) { @@ -1673,6 +1676,9 @@ static CharDriverState *qemu_chr_open_tty_fd(int fd, tty_serial_init(fd, 115200, 'N', 8, 1); chr = qemu_chr_open_fd(fd, fd, backend, errp); + if (!chr) { + return NULL; + } chr->chr_ioctl = tty_serial_ioctl; chr->chr_close = qemu_chr_close_tty; return chr; -- cgit v1.2.1