[PATCH] string: use strnlen in strlcat

Thorsten Blum posted 1 patch 1 month, 2 weeks ago
lib/string.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
[PATCH] string: use strnlen in strlcat
Posted by Thorsten Blum 1 month, 2 weeks ago
Use strnlen() to limit the destination scan to the provided buffer size.
Remove the redundant comment.

Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
---
 lib/string.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/lib/string.c b/lib/string.c
index b632c71df1a5..7b67e186d898 100644
--- a/lib/string.c
+++ b/lib/string.c
@@ -251,12 +251,11 @@ EXPORT_SYMBOL(strncat);
 #ifndef __HAVE_ARCH_STRLCAT
 size_t strlcat(char *dest, const char *src, size_t count)
 {
-	size_t dsize = strlen(dest);
+	size_t dsize = strnlen(dest, count);
 	size_t len = strlen(src);
 	size_t res = dsize + len;
 
-	/* This would be a bug */
-	BUG_ON(dsize >= count);
+	BUG_ON(dsize == count);
 
 	dest += dsize;
 	count -= dsize;
Re: [PATCH] string: use strnlen in strlcat
Posted by Andy Shevchenko 1 month, 2 weeks ago
On Thu, Apr 30, 2026 at 11:53 PM Thorsten Blum <thorsten.blum@linux.dev> wrote:
>
> Use strnlen() to limit the destination scan to the provided buffer size.
> Remove the redundant comment.

Please, do not spend time on amending strlcat(). This function must
die. Instead, convert current users to use alternative ways.

-- 
With Best Regards,
Andy Shevchenko
Re: [PATCH] string: use strnlen in strlcat
Posted by Andy Shevchenko 1 month, 2 weeks ago
On Fri, May 01, 2026 at 11:55:33AM +0300, Andy Shevchenko wrote:
> On Thu, Apr 30, 2026 at 11:53 PM Thorsten Blum <thorsten.blum@linux.dev> wrote:
> >
> > Use strnlen() to limit the destination scan to the provided buffer size.
> > Remove the redundant comment.
> 
> Please, do not spend time on amending strlcat(). This function must
> die. Instead, convert current users to use alternative ways.

Note, there is a patch by Kees to address this in partitions framework
(vast of the users of strlcat() in the kernel). Not sure if it's already
pending in Linux Next or not yet.

I have done a simple one in ACPI recently (in upstream already I believe).
So, you can use those two examples and continue killing strlcat().

-- 
With Best Regards,
Andy Shevchenko


Re: [PATCH] string: use strnlen in strlcat
Posted by Manuel Ebner 1 month, 1 week ago
On Sat, 2026-05-02 at 11:37 +0300, Andy Shevchenko wrote:
> On Fri, May 01, 2026 at 11:55:33AM +0300, Andy Shevchenko wrote:
> > On Thu, Apr 30, 2026 at 11:53 PM Thorsten Blum <thorsten.blum@linux.dev>
> > wrote:
> > > 
> > > Use strnlen() to limit the destination scan to the provided buffer size.
> > > Remove the redundant comment.
> > 
> > Please, do not spend time on amending strlcat(). This function must
> > die. Instead, convert current users to use alternative ways.
> 
> Note, there is a patch by Kees to address this in partitions framework
> (vast of the users of strlcat() in the kernel). Not sure if it's already
> pending in Linux Next or not yet.
> 
> I have done a simple one in ACPI recently (in upstream already I believe).
> So, you can use those two examples and continue killing strlcat().

Hi,
i would like to add this to the file Documentation/process/deprecated.rst.
Does right after strlcpy() make sense?

Could you point me to the examples?

Thanks
 Manuel
Re: [PATCH] string: use strnlen in strlcat
Posted by Andy Shevchenko 1 month, 1 week ago
On Mon, May 4, 2026 at 3:26 PM Manuel Ebner <manuelebner@mailbox.org> wrote:
> On Sat, 2026-05-02 at 11:37 +0300, Andy Shevchenko wrote:
> > On Fri, May 01, 2026 at 11:55:33AM +0300, Andy Shevchenko wrote:
> > > On Thu, Apr 30, 2026 at 11:53 PM Thorsten Blum <thorsten.blum@linux.dev>
> > > wrote:

> > > Please, do not spend time on amending strlcat(). This function must
> > > die. Instead, convert current users to use alternative ways.
> >
> > Note, there is a patch by Kees to address this in partitions framework
> > (vast of the users of strlcat() in the kernel). Not sure if it's already
> > pending in Linux Next or not yet.
> >
> > I have done a simple one in ACPI recently (in upstream already I believe).
> > So, you can use those two examples and continue killing strlcat().
>
> i would like to add this to the file Documentation/process/deprecated.rst.
> Does right after strlcpy() make sense?

Yes, please.

> Could you point me to the examples?

c2d466b9fe19 ("block: partitions: Replace pp_buf with struct seq_buf")
36cb728754ea ("ACPI: processor: idle: Replace strlcat() with better
alternative")


-- 
With Best Regards,
Andy Shevchenko