Use strnlen() and sizeof(s) instead of hard-coding 31 bytes.

strcpy() is deprecated and uses an additional strlen() internally; use
memcpy() directly since we already know the length of 'name' and that it
is guaranteed to be NUL-terminated.

Link: https://github.com/KSPP/linux/issues/88
Signed-off-by: Thorsten Blum <[email protected]>
---
 block/early-lookup.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/block/early-lookup.c b/block/early-lookup.c
index 3fb57f7d2b12..5c30a0cc85a0 100644
--- a/block/early-lookup.c
+++ b/block/early-lookup.c
@@ -155,10 +155,11 @@ static int __init devt_from_devname(const char *name, 
dev_t *devt)
        int part;
        char s[32];
        char *p;
+       size_t name_len = strnlen(name, sizeof(s));
 
-       if (strlen(name) > 31)
+       if (name_len == sizeof(s))
                return -EINVAL;
-       strcpy(s, name);
+       memcpy(s, name, name_len + 1);
        for (p = s; *p; p++) {
                if (*p == '/')
                        *p = '!';
-- 
2.51.1


Reply via email to