selinuxfs: use scnprintf to get real length for inode
authorliuyang34 <yangliuxm34@gmail.com>
Tue, 7 Jan 2020 01:39:18 +0000 (09:39 +0800)
committerPaul Moore <paul@paul-moore.com>
Tue, 7 Jan 2020 02:05:57 +0000 (21:05 -0500)
The return value of snprintf maybe over the size of TMPBUFLEN, use
scnprintf instead in sel_read_class and sel_read_perm.

Signed-off-by: liuyang34 <liuyang34@xiaomi.com>
[PM: cleaned up the description]
Signed-off-by: Paul Moore <paul@paul-moore.com>
security/selinux/selinuxfs.c

index 278417e..d903574 100644 (file)
@@ -1728,7 +1728,7 @@ static ssize_t sel_read_class(struct file *file, char __user *buf,
 {
        unsigned long ino = file_inode(file)->i_ino;
        char res[TMPBUFLEN];
-       ssize_t len = snprintf(res, sizeof(res), "%d", sel_ino_to_class(ino));
+       ssize_t len = scnprintf(res, sizeof(res), "%d", sel_ino_to_class(ino));
        return simple_read_from_buffer(buf, count, ppos, res, len);
 }
 
@@ -1742,7 +1742,7 @@ static ssize_t sel_read_perm(struct file *file, char __user *buf,
 {
        unsigned long ino = file_inode(file)->i_ino;
        char res[TMPBUFLEN];
-       ssize_t len = snprintf(res, sizeof(res), "%d", sel_ino_to_perm(ino));
+       ssize_t len = scnprintf(res, sizeof(res), "%d", sel_ino_to_perm(ino));
        return simple_read_from_buffer(buf, count, ppos, res, len);
 }