]> www.infradead.org Git - users/hch/misc.git/commitdiff
ceph: Use strscpy() instead of strcpy() in __get_snap_name()
authorAbdul Rahim <abdul.rahim@myyahoo.com>
Fri, 15 Nov 2024 11:24:19 +0000 (16:54 +0530)
committerIlya Dryomov <idryomov@gmail.com>
Mon, 18 Nov 2024 16:34:36 +0000 (17:34 +0100)
strcpy() performs no bounds checking on the destination buffer. This
could result in linear overflows beyond the end of the buffer, leading
to all kinds of misbehaviors [1].

This fixes checkpatch warning:
    WARNING: Prefer strscpy over strcpy

[1] https://www.kernel.org/doc/html/latest/process/deprecated.html#strcpy

[ idryomov: formatting ]

Signed-off-by: Abdul Rahim <abdul.rahim@myyahoo.com>
Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
fs/ceph/export.c

index 44451749c5446b55d6ff14d79703fc6ce78d014a..9f236a2a255701b1b291db452e18d689ae577e2a 100644 (file)
@@ -452,7 +452,13 @@ static int __get_snap_name(struct dentry *parent, char *name,
                goto out;
        if (ceph_snap(inode) == CEPH_SNAPDIR) {
                if (ceph_snap(dir) == CEPH_NOSNAP) {
-                       strcpy(name, fsc->mount_options->snapdir_name);
+                       /*
+                        * .get_name() from struct export_operations
+                        * assumes that its 'name' parameter is pointing
+                        * to a NAME_MAX+1 sized buffer
+                        */
+                       strscpy(name, fsc->mount_options->snapdir_name,
+                               NAME_MAX + 1);
                        err = 0;
                }
                goto out;