summaryrefslogtreecommitdiff
path: root/CREDITS
diff options
context:
space:
mode:
authorJustin Stitt <justinstitt@google.com>2023-09-25 09:13:12 +0300
committerMike Snitzer <snitzer@kernel.org>2023-10-23 20:02:05 +0300
commitac4149ba7efd6bc327c1e15e812091984f3a16b2 (patch)
treeabdae55ab7fb5a4dd29b56e75aedc6bf003f35d9 /CREDITS
parentf1445032173d4a49eb8b4a0808db499966897d9a (diff)
downloadlinux-ac4149ba7efd6bc327c1e15e812091984f3a16b2.tar.xz
dm cache metadata: replace deprecated strncpy with strscpy
`strncpy` is deprecated for use on NUL-terminated destination strings [1] and as such we should prefer more robust and less ambiguous string interfaces. It seems `cmd->policy_name` is intended to be NUL-terminated based on a now changed line of code from Commit (c6b4fcbad044e6ff "dm: add cache target"): | if (strcmp(cmd->policy_name, policy_name)) { // ... However, now a length-bounded strncmp is used: | if (strncmp(cmd->policy_name, policy_name, sizeof(cmd->policy_name))) ... which means NUL-terminated may not strictly be required. However, I believe the intent of the code is clear and we should maintain NUL-termination of policy_names. Moreover, __begin_transaction_flags() zero-allocates `cmd` before calling read_superblock_fields(): | cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); Also, `disk_super->policy_name` is zero-initialized | memset(disk_super->policy_name, 0, sizeof(disk_super->policy_name)); ... therefore any NUL-padding is redundant. Considering the above, a suitable replacement is `strscpy` [2] due to the fact that it guarantees NUL-termination on the destination buffer without unnecessarily NUL-padding. Link: https://www.kernel.org/doc/html/latest/process/deprecated.html#strncpy-on-nul-terminated-strings [1] Link: https://manpages.debian.org/testing/linux-manual-4.8/strscpy.9.en.html [2] Link: https://github.com/KSPP/linux/issues/90 Reviewed-by: Kees Cook <keescook@chromium.org> Signed-off-by: Justin Stitt <justinstitt@google.com> Signed-off-by: Mike Snitzer <snitzer@kernel.org>
Diffstat (limited to 'CREDITS')
0 files changed, 0 insertions, 0 deletions