power: twl4030: Use scnprintf() for avoiding potential buffer overflow
authorTakashi Iwai <tiwai@suse.de>
Wed, 11 Mar 2020 09:08:18 +0000 (10:08 +0100)
committerSebastian Reichel <sebastian.reichel@collabora.com>
Wed, 11 Mar 2020 22:20:32 +0000 (23:20 +0100)
Since snprintf() returns the would-be-output size instead of the
actual output size, the succeeding calls may go beyond the given
buffer limit.  Fix it by replacing with scnprintf().

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
drivers/power/supply/twl4030_charger.c

index 648ab80..1bc49b2 100644 (file)
@@ -726,10 +726,10 @@ twl4030_bci_mode_show(struct device *dev,
 
        for (i = 0; i < ARRAY_SIZE(modes); i++)
                if (mode == i)
-                       len += snprintf(buf+len, PAGE_SIZE-len,
+                       len += scnprintf(buf+len, PAGE_SIZE-len,
                                        "[%s] ", modes[i]);
                else
-                       len += snprintf(buf+len, PAGE_SIZE-len,
+                       len += scnprintf(buf+len, PAGE_SIZE-len,
                                        "%s ", modes[i]);
        buf[len-1] = '\n';
        return len;