From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: Sasha Levin <sashal@kernel.org>
Cc: devel@driverdev.osuosl.org, greybus-dev@lists.linaro.org,
linux-kernel@vger.kernel.org, stable@vger.kernel.org,
Johan Hovold <johan@kernel.org>
Subject: Re: [PATCH AUTOSEL 5.5 13/28] staging: greybus: loopback_test: fix potential path truncations
Date: Fri, 27 Mar 2020 07:28:33 +0100 [thread overview]
Message-ID: <20200327062833.GE1601217@kroah.com> (raw)
In-Reply-To: <20200326232357.7516-13-sashal@kernel.org>
On Thu, Mar 26, 2020 at 07:23:42PM -0400, Sasha Levin wrote:
> From: Johan Hovold <johan@kernel.org>
>
> [ Upstream commit ae62cf5eb2792d9a818c2d93728ed92119357017 ]
>
> Newer GCC warns about possible truncations of two generated path names as
> we're concatenating the configurable sysfs and debugfs path prefixes
> with a filename and placing the results in buffers of the same size as
> the maximum length of the prefixes.
>
> snprintf(d->name, MAX_STR_LEN, "gb_loopback%u", dev_id);
>
> snprintf(d->sysfs_entry, MAX_SYSFS_PATH, "%s%s/",
> t->sysfs_prefix, d->name);
>
> snprintf(d->debugfs_entry, MAX_SYSFS_PATH, "%sraw_latency_%s",
> t->debugfs_prefix, d->name);
>
> Fix this by separating the maximum path length from the maximum prefix
> length and reducing the latter enough to fit the generated strings.
>
> Note that we also need to reduce the device-name buffer size as GCC
> isn't smart enough to figure out that we ever only used MAX_STR_LEN
> bytes of it.
>
> Fixes: 6b0658f68786 ("greybus: tools: Add tools directory to greybus repo and add loopback")
> Signed-off-by: Johan Hovold <johan@kernel.org>
> Link: https://lore.kernel.org/r/20200312110151.22028-4-johan@kernel.org
> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Signed-off-by: Sasha Levin <sashal@kernel.org>
> ---
> drivers/staging/greybus/tools/loopback_test.c | 15 ++++++++-------
> 1 file changed, 8 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/staging/greybus/tools/loopback_test.c b/drivers/staging/greybus/tools/loopback_test.c
> index 5ce7d6fa086cc..3ee9109c38f60 100644
> --- a/drivers/staging/greybus/tools/loopback_test.c
> +++ b/drivers/staging/greybus/tools/loopback_test.c
> @@ -19,6 +19,7 @@
> #include <signal.h>
>
> #define MAX_NUM_DEVICES 10
> +#define MAX_SYSFS_PREFIX 0x80
> #define MAX_SYSFS_PATH 0x200
> #define CSV_MAX_LINE 0x1000
> #define SYSFS_MAX_INT 0x20
> @@ -67,7 +68,7 @@ struct loopback_results {
> };
>
> struct loopback_device {
> - char name[MAX_SYSFS_PATH];
> + char name[MAX_STR_LEN];
> char sysfs_entry[MAX_SYSFS_PATH];
> char debugfs_entry[MAX_SYSFS_PATH];
> struct loopback_results results;
> @@ -93,8 +94,8 @@ struct loopback_test {
> int stop_all;
> int poll_count;
> char test_name[MAX_STR_LEN];
> - char sysfs_prefix[MAX_SYSFS_PATH];
> - char debugfs_prefix[MAX_SYSFS_PATH];
> + char sysfs_prefix[MAX_SYSFS_PREFIX];
> + char debugfs_prefix[MAX_SYSFS_PREFIX];
> struct timespec poll_timeout;
> struct loopback_device devices[MAX_NUM_DEVICES];
> struct loopback_results aggregate_results;
> @@ -907,10 +908,10 @@ int main(int argc, char *argv[])
> t.iteration_max = atoi(optarg);
> break;
> case 'S':
> - snprintf(t.sysfs_prefix, MAX_SYSFS_PATH, "%s", optarg);
> + snprintf(t.sysfs_prefix, MAX_SYSFS_PREFIX, "%s", optarg);
> break;
> case 'D':
> - snprintf(t.debugfs_prefix, MAX_SYSFS_PATH, "%s", optarg);
> + snprintf(t.debugfs_prefix, MAX_SYSFS_PREFIX, "%s", optarg);
> break;
> case 'm':
> t.mask = atol(optarg);
> @@ -961,10 +962,10 @@ int main(int argc, char *argv[])
> }
>
> if (!strcmp(t.sysfs_prefix, ""))
> - snprintf(t.sysfs_prefix, MAX_SYSFS_PATH, "%s", sysfs_prefix);
> + snprintf(t.sysfs_prefix, MAX_SYSFS_PREFIX, "%s", sysfs_prefix);
>
> if (!strcmp(t.debugfs_prefix, ""))
> - snprintf(t.debugfs_prefix, MAX_SYSFS_PATH, "%s", debugfs_prefix);
> + snprintf(t.debugfs_prefix, MAX_SYSFS_PREFIX, "%s", debugfs_prefix);
>
> ret = find_loopback_devices(&t);
> if (ret)
> --
> 2.20.1
ALso already in all trees, please don't try to add it again.
_______________________________________________
devel mailing list
devel@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
prev parent reply other threads:[~2020-03-27 6:28 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20200326232357.7516-1-sashal@kernel.org>
2020-03-26 23:23 ` [PATCH AUTOSEL 5.5 05/28] staging: wfx: fix warning about freeing in-use mutex during device unregister Sasha Levin
2020-03-26 23:23 ` [PATCH AUTOSEL 5.5 12/28] staging: greybus: loopback_test: fix potential path truncation Sasha Levin
2020-03-27 6:28 ` Greg KH
2020-03-26 23:23 ` [PATCH AUTOSEL 5.5 13/28] staging: greybus: loopback_test: fix potential path truncations Sasha Levin
2020-03-27 6:28 ` Greg Kroah-Hartman [this message]
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=20200327062833.GE1601217@kroah.com \
--to=gregkh@linuxfoundation.org \
--cc=devel@driverdev.osuosl.org \
--cc=greybus-dev@lists.linaro.org \
--cc=johan@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=sashal@kernel.org \
--cc=stable@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).