On 24/08/2022 21:08, Wolfram Sang wrote:
Hi Andy.
- 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
Linus wrote another summary about strlcpy vs. strscpy use[1]. So, the
size argument should be the size of the smaller buffer if the buffers
are of different size. GFS2_LOCKNAME_LEN is smaller, so that looks
suitable. Shall I resend the patch with the suggested change?
Yes, please. I can't speak for the gfs2 maintainers but I think it would
be a good plan, as the combination of strscpy and the size change fixes
a bug.
Andy
All the best,
Wolfram
[1]
https://lore.kernel.org/lkml/CAHk-=wi+xbvq++uqw9ygwphjybhnb8a-xad+xp23-b+eodl...@mail.gmail.com/