From: "Gustavo A. R. Silva" <gustavoars@kernel.org>
To: Kees Cook <keescook@chromium.org>
Cc: Evgeniy Polyakov <zbr@ioremap.net>,
linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org
Subject: Re: [PATCH] w1: Split memcpy() of struct cn_msg flexible array
Date: Mon, 26 Sep 2022 20:19:26 -0500 [thread overview]
Message-ID: <YzJPnsps2R1f+mxE@work> (raw)
In-Reply-To: <20220927003927.1942170-1-keescook@chromium.org>
On Mon, Sep 26, 2022 at 05:39:27PM -0700, Kees Cook wrote:
> To work around a misbehavior of the compiler's ability to see into
> composite flexible array structs (as detailed in the coming memcpy()
> hardening series[1]), split the memcpy() of the header and the payload
> so no false positive run-time overflow warning will be generated.
>
> [1] https://lore.kernel.org/linux-hardening/20220901065914.1417829-2-keescook@chromium.org/
>
> Cc: Evgeniy Polyakov <zbr@ioremap.net>
> Signed-off-by: Kees Cook <keescook@chromium.org>
Reviewed-by: Gustavo A. R. Silva <gustavoars@kernel.org>
Thanks!
--
Gustavo
> ---
> drivers/w1/w1_netlink.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/w1/w1_netlink.c b/drivers/w1/w1_netlink.c
> index fa490aa4407c..db110cc442b1 100644
> --- a/drivers/w1/w1_netlink.c
> +++ b/drivers/w1/w1_netlink.c
> @@ -611,7 +611,8 @@ static void w1_cn_callback(struct cn_msg *cn, struct netlink_skb_parms *nsp)
> }
> atomic_set(&block->refcnt, 1);
> block->portid = nsp->portid;
> - memcpy(&block->request_cn, cn, sizeof(*cn) + cn->len);
> + block->request_cn = *cn;
> + memcpy(block->request_cn.data, cn->data, cn->len);
> node = (struct w1_cb_node *)(block->request_cn.data + cn->len);
>
> /* Sneeky, when not bundling, reply_size is the allocated space
> --
> 2.34.1
>
prev parent reply other threads:[~2022-09-27 1:19 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-27 0:39 [PATCH] w1: Split memcpy() of struct cn_msg flexible array Kees Cook
2022-09-27 1:19 ` Gustavo A. R. Silva [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=YzJPnsps2R1f+mxE@work \
--to=gustavoars@kernel.org \
--cc=keescook@chromium.org \
--cc=linux-hardening@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=zbr@ioremap.net \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.