Search Linux Wireless

Re: [PATCH] ath10k: fix out of bounds access to local buffer

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

Please send again to ath10k@xxxxxxxxxxxxxxxxxxx with cc
linux-wireless@xxxxxxxxxxxxxxx

Thanks.

2017-04-24 7:39 GMT+02:00 Michael Mera <dev@xxxxxxxxxxxxxxx>:
> During write to debugfs file simulate_fw_crash, fixed-size local buffer
> 'buf' is accessed and modified at index 'count-1', where 'count' is the
> size of the write (so potentially out of bounds).
> This patch fixes this problem.
>
> Signed-off-by: Michael Mera <dev@xxxxxxxxxxxxxxx>
> ---
>  drivers/net/wireless/ath/ath10k/debug.c | 16 ++++++++++------
>  1 file changed, 10 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath10k/debug.c b/drivers/net/wireless/ath/ath10k/debug.c
> index fb0ade3adb07..7f3c17e55693 100644
> --- a/drivers/net/wireless/ath/ath10k/debug.c
> +++ b/drivers/net/wireless/ath/ath10k/debug.c
> @@ -628,17 +628,21 @@ static ssize_t ath10k_write_simulate_fw_crash(struct file *file,
>                                               size_t count, loff_t *ppos)
>  {
>         struct ath10k *ar = file->private_data;
> -       char buf[32];
> +       char buf[32] = {0};
> +       ssize_t rc;
>         int ret;
>
> -       simple_write_to_buffer(buf, sizeof(buf) - 1, ppos, user_buf, count);
> +       /* filter partial writes and invalid commands */
> +       if (*ppos != 0 || count >= sizeof(buf) || count == 0)
> +               return -EINVAL;
>
> -       /* make sure that buf is null terminated */
> -       buf[sizeof(buf) - 1] = 0;
> +       rc = simple_write_to_buffer(buf, sizeof(buf)-1, ppos, user_buf, count);
> +       if (rc < 0)
> +               return rc;
>
>         /* drop the possible '\n' from the end */
> -       if (buf[count - 1] == '\n')
> -               buf[count - 1] = 0;
> +       if (buf[*ppos - 1] == '\n')
> +               buf[*ppos - 1] = '\0';
>
>         mutex_lock(&ar->conf_mutex);
>
> --
> 2.9.3
>



[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux