kdb: Replace deprecated strcpy() with helper function in kdb_defcmd()

strcpy() is deprecated; use the new helper function kdb_strdup_dequote()
instead. In addition to string duplication similar to kdb_strdup(), it
also trims surrounding quotes from the input string if present.

kdb_strdup_dequote() also checks for a trailing quote in the input
string which was previously not checked.

Link: https://github.com/KSPP/linux/issues/88
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
Signed-off-by: Daniel Thompson (RISCstar) <danielt@kernel.org>
This commit is contained in:
Thorsten Blum
2025-08-19 11:59:06 +02:00
committed by Daniel Thompson (RISCstar)
parent 5b26f1a314
commit 0c28a23722
3 changed files with 32 additions and 10 deletions

View File

@@ -255,6 +255,35 @@ char *kdb_strdup(const char *str, gfp_t type)
return s;
}
/*
* kdb_strdup_dequote - same as kdb_strdup(), but trims surrounding quotes from
* the input string if present.
* Remarks:
* Quotes are only removed if there is both a leading and a trailing quote.
*/
char *kdb_strdup_dequote(const char *str, gfp_t type)
{
size_t len = strlen(str);
char *s;
if (str[0] == '"' && len > 1 && str[len - 1] == '"') {
/* trim both leading and trailing quotes */
str++;
len -= 2;
}
len++; /* add space for NUL terminator */
s = kmalloc(len, type);
if (!s)
return NULL;
memcpy(s, str, len - 1);
s[len - 1] = '\0';
return s;
}
/*
* kdb_getarea_size - Read an area of data. The kdb equivalent of
* copy_from_user, with kdb messages for invalid addresses.