2015-03-01 17:50:12

by Colin King

[permalink] [raw]
Subject: [PATCH] wil6210: increase cmd buffer size to avoid sscanf buffer overflow

From: Colin Ian King <[email protected]>

cppcheck detected a buffer overflow:

[drivers/net/wireless/ath/wil6210/debugfs.c:634]: (error) Width 8
given in format string (no. 1) is larger than destination buffer
'cmd[8]', use %7s to prevent overflowing it.

For the current %8s sscanf we require cmd to be 9 chars long
so increase it by 1 byte to prevent the sscan overflow (rather
than reduce the %8s specifier to %7s as cppcheck recommends).

Signed-off-by: Colin Ian King <[email protected]>
---
drivers/net/wireless/ath/wil6210/debugfs.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wireless/ath/wil6210/debugfs.c b/drivers/net/wireless/ath/wil6210/debugfs.c
index 45c3558e..29aab12 100644
--- a/drivers/net/wireless/ath/wil6210/debugfs.c
+++ b/drivers/net/wireless/ath/wil6210/debugfs.c
@@ -618,7 +618,7 @@ static ssize_t wil_write_back(struct file *file, const char __user *buf,
struct wil6210_priv *wil = file->private_data;
int rc;
char *kbuf = kmalloc(len + 1, GFP_KERNEL);
- char cmd[8];
+ char cmd[9];
int p1, p2, p3;

if (!kbuf)
--
2.1.4



2015-03-02 08:25:03

by Vladimir Kondratiev

[permalink] [raw]
Subject: Re: [PATCH] wil6210: increase cmd buffer size to avoid sscanf buffer overflow

On 03/01/2015 07:48 PM, Colin King wrote:
> From: Colin Ian King <[email protected]>
>
> cppcheck detected a buffer overflow:
>
> [drivers/net/wireless/ath/wil6210/debugfs.c:634]: (error) Width 8
> given in format string (no. 1) is larger than destination buffer
> 'cmd[8]', use %7s to prevent overflowing it.
>
> For the current %8s sscanf we require cmd to be 9 chars long
> so increase it by 1 byte to prevent the sscan overflow (rather
> than reduce the %8s specifier to %7s as cppcheck recommends).
>
> Signed-off-by: Colin Ian King <[email protected]>
> ---
> drivers/net/wireless/ath/wil6210/debugfs.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/wireless/ath/wil6210/debugfs.c b/drivers/net/wireless/ath/wil6210/debugfs.c
> index 45c3558e..29aab12 100644
> --- a/drivers/net/wireless/ath/wil6210/debugfs.c
> +++ b/drivers/net/wireless/ath/wil6210/debugfs.c
> @@ -618,7 +618,7 @@ static ssize_t wil_write_back(struct file *file, const char __user *buf,
> struct wil6210_priv *wil = file->private_data;
> int rc;
> char *kbuf = kmalloc(len + 1, GFP_KERNEL);
> - char cmd[8];
> + char cmd[9];
> int p1, p2, p3;
>
> if (!kbuf)
>
Thanks for finding this. Here is my
Acked-by: Vladimir Kondratiev <[email protected]>

Thanks, Vladimir

2015-03-03 13:48:35

by Kalle Valo

[permalink] [raw]
Subject: Re: wil6210: increase cmd buffer size to avoid sscanf buffer overflow


> From: Colin Ian King <[email protected]>
>
> cppcheck detected a buffer overflow:
>
> [drivers/net/wireless/ath/wil6210/debugfs.c:634]: (error) Width 8
> given in format string (no. 1) is larger than destination buffer
> 'cmd[8]', use %7s to prevent overflowing it.
>
> For the current %8s sscanf we require cmd to be 9 chars long
> so increase it by 1 byte to prevent the sscan overflow (rather
> than reduce the %8s specifier to %7s as cppcheck recommends).
>
> Signed-off-by: Colin Ian King <[email protected]>
> Acked-by: Vladimir Kondratiev <[email protected]>

Thanks, applied to wireless-drivers-next.git.

Kalle Valo