Messages in this thread | | | Date | Tue, 23 Aug 2022 10:37:33 +0100 | Subject | Re: [Cluster-devel] [PATCH] gfs2: move from strlcpy with unused retval to strscpy | From | Andrew Price <> |
| |
On 18/08/2022 22:01, Wolfram Sang wrote: > Follow the advice of the below link and prefer 'strscpy' in this > subsystem. Conversion is 1:1 because the return value is not used. > Generated by a coccinelle script. > > Link: https://lore.kernel.org/r/CAHk-=wgfRnXz0W3D37d01q3JFkr_i_uTL=V6A6G1oUZcprmknw@mail.gmail.com/ > Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> > --- > fs/gfs2/ops_fstype.c | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) > > diff --git a/fs/gfs2/ops_fstype.c b/fs/gfs2/ops_fstype.c > index 549879929c84..b57d9bf4b123 100644 > --- a/fs/gfs2/ops_fstype.c > +++ b/fs/gfs2/ops_fstype.c > @@ -381,8 +381,8 @@ static int init_names(struct gfs2_sbd *sdp, int silent) > if (!table[0]) > table = sdp->sd_vfs->s_id; > > - strlcpy(sdp->sd_proto_name, proto, GFS2_FSNAME_LEN); > - strlcpy(sdp->sd_table_name, table, GFS2_FSNAME_LEN); > + strscpy(sdp->sd_proto_name, proto, GFS2_FSNAME_LEN); > + strscpy(sdp->sd_table_name, table, GFS2_FSNAME_LEN);
Perhaps the size should be changed to GFS2_LOCKNAME_LEN to match the size of the destination, too.
With that addition, this patch fixes this syzkaller report:
https://listman.redhat.com/archives/cluster-devel/2022-August/022755.html
Andy
> > table = sdp->sd_table_name; > while ((table = strchr(table, '/'))) > @@ -1439,13 +1439,13 @@ static int gfs2_parse_param(struct fs_context *fc, struct fs_parameter *param) > > switch (o) { > case Opt_lockproto: > - strlcpy(args->ar_lockproto, param->string, GFS2_LOCKNAME_LEN); > + strscpy(args->ar_lockproto, param->string, GFS2_LOCKNAME_LEN); > break; > case Opt_locktable: > - strlcpy(args->ar_locktable, param->string, GFS2_LOCKNAME_LEN); > + strscpy(args->ar_locktable, param->string, GFS2_LOCKNAME_LEN); > break; > case Opt_hostdata: > - strlcpy(args->ar_hostdata, param->string, GFS2_LOCKNAME_LEN); > + strscpy(args->ar_hostdata, param->string, GFS2_LOCKNAME_LEN); > break; > case Opt_spectator: > args->ar_spectator = 1;
| |