Skip to content

Commit

Permalink
qemu-char: avoid segfault if user lacks of permisson of a given logfile
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
morecache authored and bonzini committed Sep 14, 2016
1 parent 0d8e065 commit 71200fb
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 0 deletions.
3 changes: 3 additions & 0 deletions backends/msmouse.c
Expand Up @@ -159,6 +159,9 @@ static CharDriverState *qemu_chr_open_msmouse(const char *id,
CharDriverState *chr;

chr = qemu_chr_alloc(common, errp);
if (!chr) {
return NULL;
}
chr->chr_write = msmouse_chr_write;
chr->chr_close = msmouse_chr_close;
chr->chr_accept_input = msmouse_chr_accept_input;
Expand Down
6 changes: 6 additions & 0 deletions qemu-char.c
Expand Up @@ -1230,6 +1230,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) {
Expand Down Expand Up @@ -1686,6 +1689,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;
Expand Down

0 comments on commit 71200fb

Please sign in to comment.