]> git.baikalelectronics.ru Git - kernel.git/commit
btrfs: sysfs: Use scnprintf() instead of snprintf()
authorTakashi Iwai <tiwai@suse.de>
Sun, 22 Mar 2020 09:09:11 +0000 (10:09 +0100)
committerDavid Sterba <dsterba@suse.com>
Mon, 23 Mar 2020 17:14:47 +0000 (18:14 +0100)
commit4c62717641d5d726b9768bdf440fc36340a0a88a
tree481a78217c792a93aa330b95202cefa24d7eb807
parent8a4610346fc24823664fa83403f1ba43799a3cd0
btrfs: sysfs: Use scnprintf() instead of snprintf()

snprintf() is a hard-to-use function, and it's especially difficult to
use it properly for concatenating substrings in a buffer with a limited
size.  Since snprintf() returns the would-be-output size, not the actual
size, the subsequent use of snprintf() may point to the incorrect
position easily.  Also, returning the value from snprintf() directly to
sysfs show function would pass a bogus value that is higher than the
actually truncated string.

That said, although the current code doesn't actually overflow the
buffer with PAGE_SIZE, it's a usage that shouldn't be done.  Or it's
worse; this gives a wrong confidence as if it were doing safe
operations.

This patch replaces such snprintf() calls with a safer version,
scnprintf().  It returns the actual output size, hence it's more
intuitive and the code does what's expected.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/sysfs.c