scsi: elx: libefc: Replace deprecated strncpy() with strscpy_pad()/memcpy()
strncpy() is deprecated for use on NUL-terminated destination strings [1] and as such we should prefer more robust and less ambiguous string interfaces. To keep node->current_state_name and node->prev_state_name NUL-padded and NUL-terminated let's use strscpy_pad() as this implicitly provides both. For the swap between the two, a simple memcpy() will suffice. 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 Cc: linux-hardening@vger.kernel.org Signed-off-by: Justin Stitt <justinstitt@google.com> Link: https://lore.kernel.org/r/20231026-strncpy-drivers-scsi-elx-libefc-efc_node-h-v2-1-5c083d0c13f4@google.com Reviewed-by: Kees Cook <keescook@chromium.org> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
4592411784
commit
1057f44137
@ -26,13 +26,13 @@ efc_node_evt_set(struct efc_sm_ctx *ctx, enum efc_sm_event evt,
|
||||
struct efc_node *node = ctx->app;
|
||||
|
||||
if (evt == EFC_EVT_ENTER) {
|
||||
strncpy(node->current_state_name, handler,
|
||||
sizeof(node->current_state_name));
|
||||
strscpy_pad(node->current_state_name, handler,
|
||||
sizeof(node->current_state_name));
|
||||
} else if (evt == EFC_EVT_EXIT) {
|
||||
strncpy(node->prev_state_name, node->current_state_name,
|
||||
sizeof(node->prev_state_name));
|
||||
strncpy(node->current_state_name, "invalid",
|
||||
sizeof(node->current_state_name));
|
||||
memcpy(node->prev_state_name, node->current_state_name,
|
||||
sizeof(node->prev_state_name));
|
||||
strscpy_pad(node->current_state_name, "invalid",
|
||||
sizeof(node->current_state_name));
|
||||
}
|
||||
node->prev_evt = node->current_evt;
|
||||
node->current_evt = evt;
|
||||
|
Loading…
x
Reference in New Issue
Block a user