summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLin Ma <lma@suse.com>2016-09-14 14:22:50 +0800
committerMichael Roth <mdroth@linux.vnet.ibm.com>2016-09-20 11:03:32 -0500
commitb79239a41bffffbbe4ed412acd191c75ef605cc0 (patch)
treed050b0f83b8cbbb04ce5b143bec4726e2c6a82d8
parentc5b64fb79c8e265c4ff7ab3ff94a8991b8e3fdc0 (diff)
downloadqemu-b79239a41bffffbbe4ed412acd191c75ef605cc0.tar.gz
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 <lma@suse.com> Cc: qemu-stable <qemu-stable@nongnu.org> Message-Id: <20160914062250.22226-1-lma@suse.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> (cherry picked from commit 71200fb9664c2967a1cdd22b68b0da3a8b2b3eb7) Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
-rw-r--r--qemu-char.c6
1 files changed, 6 insertions, 0 deletions
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;