Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

fs/orangefs: use snprintf() instead of sprintf()

sprintf() is discouraged for use with bounded destination buffers
as it does not prevent buffer overflows when the formatted output
exceeds the destination buffer size. snprintf() is a safer
alternative as it limits the number of bytes written and ensures
NUL-termination.

Replace sprintf() with snprintf() for copying the debug string
into a temporary buffer, using ORANGEFS_MAX_DEBUG_STRING_LEN as
the maximum size to ensure safe formatting and prevent memory
corruption in edge cases.

EDIT: After this patch sat on linux-next for a few days, Dan
Carpenter saw it and suggested that I use scnprintf instead of
snprintf. I made the change and retested.

Signed-off-by: Amir Mohammad Jahangirzad <a.jahangirzad@gmail.com>
Signed-off-by: Mike Marshall <hubcap@omnibond.com>

authored by

Amir Mohammad Jahangirzad and committed by
Mike Marshall
cdfa1304 347e9f50

+1 -1
+1 -1
fs/orangefs/orangefs-debugfs.c
··· 396 396 goto out; 397 397 398 398 mutex_lock(&orangefs_debug_lock); 399 - sprintf_ret = sprintf(buf, "%s", (char *)file->private_data); 399 + sprintf_ret = scnprintf(buf, ORANGEFS_MAX_DEBUG_STRING_LEN, "%s", (char *)file->private_data); 400 400 mutex_unlock(&orangefs_debug_lock); 401 401 402 402 read_ret = simple_read_from_buffer(ubuf, count, ppos, buf, sprintf_ret);