From: "Volodymyr G. Lukiianyk" <volodymyrgl@gmail.com>
To: linux-wireless@vger.kernel.org
Subject: [PATCH] WEXT: Correct the size of the buffer to be copied to user-space in standard GET WE ioctls.
Date: Sun, 20 Jan 2008 20:30:55 +0200 [thread overview]
Message-ID: <4793935F.2000102@gmail.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 1109 bytes --]
For the most of standard WE GET ioctls the size of the buffer to store driver's
response is calculated on base of the call's descriptor (.token_size and
.max_tokens fields) without taking into consideration the size of the buffer
provided by application in struct iwreq. But when the response is being copied to
userspace, its size is calculated from the length provided by application. This
can lead to kernel internal data leak into userspace, and oopses when the buffer
is located near the end of the available memory. To prevent these situations the
size used during copying is set to the same one used during allocation.
Signed-off-by: Volodymyr G Lukiianyk <volodymyrgl@gmail.com>
---
I've actually seen those oopses on the system with 32MB of memory, when 1k
object at address c1fffc00 was returned by the SLAB while handling request for
allocating 568 bytes buffer (struct iw_range). Later, copy_to_user() (instructed
to copy 1136 bytes, since iwlist uses 2x buffer) crashed trying to access
c2000000, which is beyond the bounds of available 32MB.
The patch attached is against the Linus's tree.
[-- Attachment #2: fix_copied_buffer_size.diff --]
[-- Type: text/plain, Size: 392 bytes --]
diff --git a/net/wireless/wext.c b/net/wireless/wext.c
index 47e80cc..c6ce59b 100644
--- a/net/wireless/wext.c
+++ b/net/wireless/wext.c
@@ -866,8 +866,7 @@ static int ioctl_standard_call(struct net_device * dev,
}
err = copy_to_user(iwr->u.data.pointer, extra,
- iwr->u.data.length *
- descr->token_size);
+ extra_size);
if (err)
ret = -EFAULT;
}
next reply other threads:[~2008-01-20 18:34 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-01-20 18:30 Volodymyr G. Lukiianyk [this message]
2008-01-20 19:04 ` [PATCH] WEXT: Correct the size of the buffer to be copied to user-space in standard GET WE ioctls Luis R. Rodriguez
2008-01-21 16:07 ` Volodymyr G. Lukiianyk
2008-01-22 18:16 ` Jean Tourrilhes
2008-01-22 18:14 ` Jean Tourrilhes
2008-01-23 20:30 ` Volodymyr G. Lukiianyk
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4793935F.2000102@gmail.com \
--to=volodymyrgl@gmail.com \
--cc=linux-wireless@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).