Re: [PATCH v3] drivers/edac/edac_mc: Remove all strcpy() uses

From: Joe Perches
Date: Mon Aug 09 2021 - 13:19:08 EST


On Mon, 2021-08-09 at 12:05 +0200, Robert Richter wrote:
> On 08.08.21 13:26:17, Len Baker wrote:
>
> > > Perhaps this should use scnprintf rather than strscpy
> > > Something like:
> > > n += scnprintf(buf + n, len - n, "%s",
> > > p == e->label ? dim->label : OTHER_LABEL);
> > >
> > In the first version [1] the scnprintf was used but Robert Richter don't
> > see any benefit compared with the current implementation.
> >
> > [1] https://lore.kernel.org/linux-hardening/20210725162954.9861-1-len.baker@xxxxxxx/
>
> Reason is that there is the assumption that p must always point at the
> end of the string and its trailing zero byte. I am not opposed using
> the string function's return code instead of strlen() to get the
> length. But why using formated output if strscpy() can be used?

strscpy and scnprintf have different return values and it's simpler
and much more common to use scnprintf for appended strings that are
limited to a specific buffer length.