On Thu, Mar 28, 2024 at 09:16:52PM +0000, Justin Stitt wrote: > strncpy() is deprecated for use on NUL-terminated destination strings > [1] and as such we should prefer more robust and less ambiguous string > interfaces. > > Our goal here is to get @namebuf populated with @name's contents but > surrounded with quotes. There is some careful handling done to ensure we > properly truncate @name so that we have room for a literal quote as well > as a NUL-term. All this careful handling can be done with scnprintf > using the dynamic string width specifier %.*s which allows us to pass in > the max size for a source string. Doing this, we can put literal quotes > in our format specifier and ensure @name is truncated to fit inbetween > these quotes (-3 is from 2 quotes + 1 NUL-byte). > > All in all, we get to remove a deprecated use of strncpy and clean up > this code nicely! > > Link: https://www.kernel.org/doc/html/latest/process/deprecated.html#strncpy-on-nul-terminated-strings [1] > Link: https://manpages.debian.org/testing/linux-manual-4.8/strscpy.9.en.html [2] > Link: https://github.com/KSPP/linux/issues/90 > Cc: linux-hardening@xxxxxxxxxxxxxxx > Signed-off-by: Justin Stitt <justinstitt@xxxxxxxxxx> Yeah, I like the use of %.*s here. This is much more clear now I think. Reviewed-by: Kees Cook <keescook@xxxxxxxxxxxx> -- Kees Cook