i2c: sun6i-pw2i: Prefer strscpy over strlcpy
authorLen Baker <len.baker@gmx.com>
Tue, 17 Aug 2021 16:58:59 +0000 (18:58 +0200)
committerWolfram Sang <wsa@kernel.org>
Tue, 17 Aug 2021 19:37:40 +0000 (21:37 +0200)
strlcpy() reads the entire source buffer first. This read may exceed the
destination size limit. This is both inefficient and can lead to linear
read overflows if a source string is not NUL-terminated. The safe
replacement is strscpy().

This is a previous step in the path to remove the strlcpy() function
entirely from the kernel [1].

[1] https://github.com/KSPP/linux/issues/89

Signed-off-by: Len Baker <len.baker@gmx.com>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
drivers/i2c/busses/i2c-sun6i-p2wi.c

index 2f6f646..9e3483f 100644 (file)
@@ -234,7 +234,7 @@ static int p2wi_probe(struct platform_device *pdev)
        if (IS_ERR(p2wi->regs))
                return PTR_ERR(p2wi->regs);
 
-       strlcpy(p2wi->adapter.name, pdev->name, sizeof(p2wi->adapter.name));
+       strscpy(p2wi->adapter.name, pdev->name, sizeof(p2wi->adapter.name));
        irq = platform_get_irq(pdev, 0);
        if (irq < 0)
                return irq;