[PATCH] copy_class_filename: replace deprecated strlcpy with strscpy

Daniel Yang posted 1 patch 2 weeks, 5 days ago
tools/perf/jvmti/libjvmti.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] copy_class_filename: replace deprecated strlcpy with strscpy
Posted by Daniel Yang 2 weeks, 5 days ago
The latest kernel docs:
https://www.kernel.org/doc/html/latest/process/deprecated.html
recommends replacing strlcpy with strscpy as the safer alternative. The
value of strlcpy is not used so there shouldn't be issues with replacing
the deprecated call.

Signed-off-by: Daniel Yang <danielyangkang@gmail.com>
---
 tools/perf/jvmti/libjvmti.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/jvmti/libjvmti.c b/tools/perf/jvmti/libjvmti.c
index fcca275e5..04d6825d2 100644
--- a/tools/perf/jvmti/libjvmti.c
+++ b/tools/perf/jvmti/libjvmti.c
@@ -158,7 +158,7 @@ copy_class_filename(const char * class_sign, const char * file_name, char * resu
 		result[i] = '\0';
 	} else {
 		/* fallback case */
-		strlcpy(result, file_name, max_length);
+		strscpy(result, file_name, max_length);
 	}
 }
 
-- 
2.39.2
Re: [PATCH] copy_class_filename: replace deprecated strlcpy with strscpy
Posted by Athira Rajeev 2 weeks, 4 days ago

> On 5 Nov 2024, at 12:42 PM, Daniel Yang <danielyangkang@gmail.com> wrote:
> 
> The latest kernel docs:
> https://www.kernel.org/doc/html/latest/process/deprecated.html
> recommends replacing strlcpy with strscpy as the safer alternative. The
> value of strlcpy is not used so there shouldn't be issues with replacing
> the deprecated call.
> 
> Signed-off-by: Daniel Yang <danielyangkang@gmail.com>
> ---
> tools/perf/jvmti/libjvmti.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/tools/perf/jvmti/libjvmti.c b/tools/perf/jvmti/libjvmti.c
> index fcca275e5..04d6825d2 100644
> --- a/tools/perf/jvmti/libjvmti.c
> +++ b/tools/perf/jvmti/libjvmti.c
> @@ -158,7 +158,7 @@ copy_class_filename(const char * class_sign, const char * file_name, char * resu
> result[i] = '\0';
> } else {
> /* fallback case */
> - strlcpy(result, file_name, max_length);
> + strscpy(result, file_name, max_length);

Hi,

This hits a compilation error:

In file included from jvmti/libjvmti.c:3:
jvmti/libjvmti.c: In function ‘copy_class_filename’:
/home/athira/perf-tools-next/tools/include/linux/string.h:15:17: error: too many arguments to function ‘strcpy’
   15 | #define strscpy strcpy
      |                 ^~~~~~
jvmti/libjvmti.c:161:17: note: in expansion of macro ‘strscpy’
  161 |                 strscpy(result, file_name, max_length);
      |                 ^~~~~~~
In file included from /usr/include/features.h:490,
                 from /usr/include/bits/libc-header-start.h:33,
                 from /usr/include/stdint.h:26,
                 from /usr/lib/gcc/ppc64le-redhat-linux/11/include/stdint.h:9,
                 from /home/athira/perf-tools-next/tools/include/linux/types.h:7,
                 from /home/athira/perf-tools-next/tools/include/linux/compiler.h:131,
                 from jvmti/libjvmti.c:2:
/usr/include/bits/string_fortified.h:77:1: note: declared here
   77 | __NTH (strcpy (char *__restrict __dest, const char *__restrict __src))
      | ^~~~~


My analysis/review for this is same as my response for your similar patch here:
https://lore.kernel.org/linux-perf-users/3CA737FF-2F21-42CA-BF95-5F0341F6B68B@linux.vnet.ibm.com/T/#m619e016f6dd4abb1e1830580bdc74c86b4fcace8

Thanks
Athira

> }
> }
> 
> -- 
> 2.39.2
> 
>