kernel/sysctl_binary.c: use scnprintf() instead of snprintf()
authorChen Gang <gang.chen@asianux.com>
Tue, 12 Nov 2013 23:11:22 +0000 (15:11 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 13 Nov 2013 03:09:33 +0000 (12:09 +0900)
snprintf() will return the 'ideal' length which may be larger than real
buffer length, if we only want to use real length, need use scnprintf()
instead of.

Signed-off-by: Chen Gang <gang.chen@asianux.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
kernel/sysctl_binary.c

index b609213ca9a2f310f169a4d08c08cf1c36f56791..653cbbd9e7ad4dcb1ee0647c6d11cc453b1e81a9 100644 (file)
@@ -1024,7 +1024,7 @@ static ssize_t bin_intvec(struct file *file,
                        if (get_user(value, vec + i))
                                goto out_kfree;
 
-                       str += snprintf(str, end - str, "%lu\t", value);
+                       str += scnprintf(str, end - str, "%lu\t", value);
                }
 
                result = kernel_write(file, buffer, str - buffer, 0);
@@ -1095,7 +1095,7 @@ static ssize_t bin_ulongvec(struct file *file,
                        if (get_user(value, vec + i))
                                goto out_kfree;
 
-                       str += snprintf(str, end - str, "%lu\t", value);
+                       str += scnprintf(str, end - str, "%lu\t", value);
                }
 
                result = kernel_write(file, buffer, str - buffer, 0);
@@ -1205,7 +1205,7 @@ static ssize_t bin_dn_node_address(struct file *file,
                if (get_user(dnaddr, (__le16 __user *)newval))
                        goto out;
 
-               len = snprintf(buf, sizeof(buf), "%hu.%hu",
+               len = scnprintf(buf, sizeof(buf), "%hu.%hu",
                                le16_to_cpu(dnaddr) >> 10,
                                le16_to_cpu(dnaddr) & 0x3ff);