forked from luck/tmp_suning_uos_patched
wext: Add bound checks for copy_from_user
The wireless extensions have a copy_from_user to a local stack array "essid", but both me and gcc have failed to find where the bounds for this copy are located in the code. This patch adds some basic sanity checks for the copy length to make sure that we don't overflow the stack buffer. Signed-off-by: Arjan van de Ven <arjan@linux.intel.com> Cc: linux-wireless@vger.kernel.org Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
0ff716136a
commit
8503bd8c7d
|
@ -773,10 +773,13 @@ static int ioctl_standard_iw_point(struct iw_point *iwp, unsigned int cmd,
|
|||
essid_compat = 1;
|
||||
else if (IW_IS_SET(cmd) && (iwp->length != 0)) {
|
||||
char essid[IW_ESSID_MAX_SIZE + 1];
|
||||
unsigned int len;
|
||||
len = iwp->length * descr->token_size;
|
||||
|
||||
err = copy_from_user(essid, iwp->pointer,
|
||||
iwp->length *
|
||||
descr->token_size);
|
||||
if (len > IW_ESSID_MAX_SIZE)
|
||||
return -EFAULT;
|
||||
|
||||
err = copy_from_user(essid, iwp->pointer, len);
|
||||
if (err)
|
||||
return -EFAULT;
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user