]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
9p p9mode2perm: remove useless strlcpy and check sscanf return code
authorDominique Martinet <asmadeus@codewreck.org>
Tue, 2 Nov 2021 13:24:22 +0000 (22:24 +0900)
committerDominique Martinet <asmadeus@codewreck.org>
Wed, 3 Nov 2021 08:45:04 +0000 (17:45 +0900)
This is also a checkpatch warning fix but this one might have implications
so keeping it separate

Link: http://lkml.kernel.org/r/20211102134608.1588018-5-dominique.martinet@atmark-techno.com
Signed-off-by: Dominique Martinet <asmadeus@codewreck.org>
fs/9p/vfs_inode.c

index 441f62d22064bede96806b1f98f7a9080afc45d9..d50e19c782cda86658c08e12d8bb38a7d7c02467 100644 (file)
@@ -108,7 +108,7 @@ static int p9mode2perm(struct v9fs_session_info *v9ses,
 static umode_t p9mode2unixmode(struct v9fs_session_info *v9ses,
                               struct p9_wstat *stat, dev_t *rdev)
 {
-       int res;
+       int res, r;
        u32 mode = stat->mode;
 
        *rdev = 0;
@@ -126,11 +126,16 @@ static umode_t p9mode2unixmode(struct v9fs_session_info *v9ses,
                res |= S_IFIFO;
        else if ((mode & P9_DMDEVICE) && (v9fs_proto_dotu(v9ses))
                 && (v9ses->nodev == 0)) {
-               char type = 0, ext[32];
+               char type = 0;
                int major = -1, minor = -1;
 
-               strlcpy(ext, stat->extension, sizeof(ext));
-               sscanf(ext, "%c %i %i", &type, &major, &minor);
+               r = sscanf(stat->extension, "%c %i %i", &type, &major, &minor);
+               if (r != 3) {
+                       p9_debug(P9_DEBUG_ERROR,
+                                "invalid device string, umode will be bogus: %s\n",
+                                stat->extension);
+                       return res;
+               }
                switch (type) {
                case 'c':
                        res |= S_IFCHR;