From: "Nuno Sá" <noname.nuno@gmail.com>
To: Markus Burri <markus.burri@mt.com>, linux-kernel@vger.kernel.org
Cc: Nuno Sa <nuno.sa@analog.com>,
Olivier Moysan <olivier.moysan@foss.st.com>,
Jonathan Cameron <jic23@kernel.org>,
Lars-Peter Clausen <lars@metafoo.de>,
linux-iio@vger.kernel.org, Markus Burri <markus.burri@bbv.ch>
Subject: Re: [PATCH v1] iio: backend: fix out-of-bound write
Date: Fri, 02 May 2025 16:12:04 +0100 [thread overview]
Message-ID: <c3a792558b7d35f7342a53c94810861cb0eb0b8e.camel@gmail.com> (raw)
In-Reply-To: <20250501063240.25295-1-markus.burri@mt.com>
On Thu, 2025-05-01 at 08:32 +0200, Markus Burri wrote:
> The buffer is set to 80 character. If a caller write more characters,
> count is truncated to the max available space in "simple_write_to_buffer".
> But afterwards a string terminator is written to the buffer at offset count
> without boundary check. The zero termination is written OUT-OF-BOUND.
>
> Add a check that the given buffer is smaller then the buffer to prevent.
>
> Fixes: 035b4989211d ("iio: backend: make sure to NULL terminate stack buffer")
> Signed-off-by: Markus Burri <markus.burri@mt.com>
> ---
> drivers/iio/industrialio-backend.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/iio/industrialio-backend.c b/drivers/iio/industrialio-
> backend.c
> index a43c8d1bb3d0..3878bd698c98 100644
> --- a/drivers/iio/industrialio-backend.c
> +++ b/drivers/iio/industrialio-backend.c
> @@ -155,6 +155,9 @@ static ssize_t iio_backend_debugfs_write_reg(struct file
> *file,
> ssize_t rc;
> int ret;
>
> + if (count >= sizeof(buf))
> + return -ENOSPC;
> +
Oh, this can indeed easily lead to an oob access. However, I would likely not
mind in early returning an error. This is to write registers so 80 should be
more than enough. Meaning that to trigger this, it has to be intentional. That
said, of course we should not let that happen but I would still truncate things
and let it fail afterwards (keep the code slightly simpler with one less check).
So I would instead do:
buf[rc] = '\0';
Thanks for catching this!
- Nuno Sá
> rc = simple_write_to_buffer(buf, sizeof(buf) - 1, ppos, userbuf,
> count);
> if (rc < 0)
> return rc;
>
> base-commit: b4432656b36e5cc1d50a1f2dc15357543add530e
next prev parent reply other threads:[~2025-05-02 15:12 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-01 6:32 [PATCH v1] iio: backend: fix out-of-bound write Markus Burri
2025-05-02 15:12 ` Nuno Sá [this message]
2025-05-02 21:11 ` EXTERNAL - " Markus Burri
2025-05-04 8:27 ` Nuno Sá
2025-05-05 16:41 ` Jonathan Cameron
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=c3a792558b7d35f7342a53c94810861cb0eb0b8e.camel@gmail.com \
--to=noname.nuno@gmail.com \
--cc=jic23@kernel.org \
--cc=lars@metafoo.de \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=markus.burri@bbv.ch \
--cc=markus.burri@mt.com \
--cc=nuno.sa@analog.com \
--cc=olivier.moysan@foss.st.com \
/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