Re: [PATCH v2 1/3] Doc: deprecated.rst: add strlcat()
From: David Laight
Date: Mon May 18 2026 - 09:11:46 EST
On Mon, 18 May 2026 09:11:04 +0200
Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> wrote:
> Hi David,
...
> > I don't really see why strlcat() should be deprecated.
> > Clearly there are many cases where there are better ways to do things.
>
> https://elixir.bootlin.com/linux/v7.0.8/source/include/linux/fortify-string.h#L346
> already says "Do not use this function. [...] Prefer building the
> * string with formatting, via scnprintf(), seq_buf, or similar.".
Trouble is that all requires a lot more rework.
I might try changing the type of the 'buffer' to sysfs_emit()
from 'char *' to 'sysfs_buf *'.
Initially the types will have to be the same, but propagating it through
will show where it can be used.
But last I looked I failed to even find the associated kmalloc().
Eventually it could be changed to a different type.
> > The only problem with strlcat() is that it returns the 'required length'.
> > So there are some broken uses.
> > - fs/nfs/flexfilelayout/flexfilelayout.c
> > - lib/kunit/string-stream.c (although the preceding vsnprintf() looks like the actual bug).
> > There is also some very strange code in security/selinus/ima.c - but it may be ok.
> >
> > In reality the return value of strlcat() isn't really much worse that that
> > of snprintf().
>
> So we need strscat()? ;-)
Indeed...
-- David
>
> Gr{oetje,eeting}s,
>
> Geert
>