Subject: Re: [PATCH v5 0/3] Fix inefficiences and rename nla_strlcpy

From: Kees Cook <[email-masked]>
Date: Fri, 13 Nov 2020 10:56:26 -0800

On Fri, Nov 13, 2020 at 12:11:30PM +0100, [email-masked] wrote:
> From: Francis Laniel <[email-masked]>
> 
> Hi.
> 
> 
> I hope you are all fine and the same for your relatives.
> 
> This patch set answers to first three issues listed in:
> https://github.com/KSPP/linux/issues/110
> 
> To sum up, the patch contributions are the following:
> 1. the first patch fixes an inefficiency where some bytes in dst were written
> twice, one with 0 the other with src content.
> 2. The second one modifies nla_strlcpy to return the same value as strscpy,
> i.e. number of bytes written or -E2BIG if src was truncated.
> It also modifies code that calls nla_strlcpy and checks for its return value.
> 3. The third renames nla_strlcpy to nla_strscpy.
> 
> Unfortunately, I did not find how to create struct nlattr objects so I tested
> my modifications on simple char* and with GDB using tc to get to
> tcf_proto_check_kind.
> 
> If you see any way to improve the code or have any remark, feel free to comment.
> 
> 
> Best regards and take care of yourselves.
> 
> Francis Laniel (3):
>   Fix unefficient call to memset before memcpu in nla_strlcpy.
>   Modify return value of nla_strlcpy to match that of strscpy.
>   treewide: rename nla_strlcpy to nla_strscpy.

Thanks! This looks good to me.

Jakub, does this look ready to you?

> 
>  drivers/infiniband/core/nldev.c            | 10 +++---
>  drivers/net/can/vxcan.c                    |  4 +--
>  drivers/net/veth.c                         |  4 +--
>  include/linux/genl_magic_struct.h          |  2 +-
>  include/net/netlink.h                      |  4 +--
>  include/net/pkt_cls.h                      |  2 +-
>  kernel/taskstats.c                         |  2 +-
>  lib/nlattr.c                               | 42 ++++++++++++++--------
>  net/core/fib_rules.c                       |  4 +--
>  net/core/rtnetlink.c                       | 12 +++----
>  net/decnet/dn_dev.c                        |  2 +-
>  net/ieee802154/nl-mac.c                    |  2 +-
>  net/ipv4/devinet.c                         |  2 +-
>  net/ipv4/fib_semantics.c                   |  2 +-
>  net/ipv4/metrics.c                         |  2 +-
>  net/netfilter/ipset/ip_set_hash_netiface.c |  4 +--
>  net/netfilter/nf_tables_api.c              |  6 ++--
>  net/netfilter/nfnetlink_acct.c             |  2 +-
>  net/netfilter/nfnetlink_cthelper.c         |  4 +--
>  net/netfilter/nft_ct.c                     |  2 +-
>  net/netfilter/nft_log.c                    |  2 +-
>  net/netlabel/netlabel_mgmt.c               |  2 +-
>  net/nfc/netlink.c                          |  2 +-
>  net/sched/act_api.c                        |  2 +-
>  net/sched/act_ipt.c                        |  2 +-
>  net/sched/act_simple.c                     |  4 +--
>  net/sched/cls_api.c                        |  2 +-
>  net/sched/sch_api.c                        |  2 +-
>  net/tipc/netlink_compat.c                  |  2 +-
>  29 files changed, 73 insertions(+), 61 deletions(-)
> 
> -- 
> 2.20.1
> 

-- 
Kees Cook