From: Ryder Lee <ryder.lee@mediatek.com>
To: Johannes Berg <johannes@sipsolutions.net>
Cc: "Shayne Chen" <shayne.chen@mediatek.com>,
linux-wireless <linux-wireless@vger.kernel.org>,
"Toke Høiland-Jørgensen" <toke@toke.dk>,
linux-mediatek <linux-mediatek@lists.infradead.org>,
"Sujuan Chen" <sujuan.chen@mediatek.com>,
"Lorenzo Bianconi" <lorenzo.bianconi@redhat.com>,
"Felix Fietkau" <nbd@nbd.name>
Subject: Re: [PATCH] mac80211: fix incorrect strlen of .write in debugfs
Date: Sat, 9 Jan 2021 08:22:13 +0800 [thread overview]
Message-ID: <1610151733.9343.3.camel@mtkswgap22> (raw)
In-Reply-To: <0efec65815ff9e26b3da69cb35d503a90086760c.camel@sipsolutions.net>
On Fri, 2021-01-08 at 21:02 +0100, Johannes Berg wrote:
> This looks wrong to me, am I missing something?
>
> > diff --git a/net/mac80211/debugfs.c b/net/mac80211/debugfs.c
> > index 9135b6f..9991a6a 100644
> > --- a/net/mac80211/debugfs.c
> > +++ b/net/mac80211/debugfs.c
> > @@ -120,7 +120,6 @@ static ssize_t aqm_write(struct file *file,
> > {
> > struct ieee80211_local *local = file->private_data;
> > char buf[100];
> > - size_t len;
> >
> > if (count > sizeof(buf))
> > return -EINVAL;
>
> This ensures that count <= sizeof(buf)
>
> > @@ -128,10 +127,10 @@ static ssize_t aqm_write(struct file *file,
> > if (copy_from_user(buf, user_buf, count))
> > return -EFAULT;
>
> We copy, that's fine.
>
> > - buf[sizeof(buf) - 1] = '\0';
> > - len = strlen(buf);
> > - if (len > 0 && buf[len-1] == '\n')
> > - buf[len-1] = 0;
> > + if (count && buf[count - 1] == '\n')
> > + buf[count - 1] = '\0';
>
> This I think really was meant as strlen, because if you write something
> like
>
> 10\n\0\0\0\0
>
> before it would have parsed it as 10 still, now it gets confused?
>
> I guess I'm not worried about that though.
I think the problem only happens on airtime_flags_write() that uses
kstrtou16()
> > + buf[count] = '\0';
>
> But if count == sizeof(buf) then this is an out-of-bounds write.
Right. Then, we can
if (count >= sizeof(buf))
return -EINVAL;
Ryder
next prev parent reply other threads:[~2021-01-09 0:23 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-08 10:56 [PATCH] mac80211: fix incorrect strlen of .write in debugfs Shayne Chen
2021-01-08 12:27 ` Toke Høiland-Jørgensen
2021-01-08 20:02 ` Johannes Berg
2021-01-09 0:22 ` Ryder Lee [this message]
2021-01-11 6:19 ` Shayne Chen
2021-01-11 12:10 ` Johannes Berg
2021-01-12 1:42 ` Shayne Chen
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=1610151733.9343.3.camel@mtkswgap22 \
--to=ryder.lee@mediatek.com \
--cc=johannes@sipsolutions.net \
--cc=linux-mediatek@lists.infradead.org \
--cc=linux-wireless@vger.kernel.org \
--cc=lorenzo.bianconi@redhat.com \
--cc=nbd@nbd.name \
--cc=shayne.chen@mediatek.com \
--cc=sujuan.chen@mediatek.com \
--cc=toke@toke.dk \
/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