On 14/09/2016 08:22, Lin Ma wrote:
> 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 <l...@suse.com>
> ---
>  backends/msmouse.c | 3 +++
>  qemu-char.c        | 6 ++++++
>  2 files changed, 9 insertions(+)
> 
> diff --git a/backends/msmouse.c b/backends/msmouse.c
> index aeb9055..aceb6dc 100644
> --- a/backends/msmouse.c
> +++ b/backends/msmouse.c
> @@ -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;
> diff --git a/qemu-char.c b/qemu-char.c
> index 5f82ebb..fdb23f5 100644
> --- a/qemu-char.c
> +++ b/qemu-char.c
> @@ -1223,6 +1223,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) {
> @@ -1679,6 +1682,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;
> 

Cc: qemu-stable <qemu-sta...@nongnu.org>

Queued for 2.8, thanks.

Reply via email to