From d8df4b52c09637eea8dc124c77621535986f321b Mon Sep 17 00:00:00 2001 From: Lucas De Marchi Date: Tue, 30 Apr 2024 12:01:45 -0700 Subject: lib/igt_drm_fdinfo: Fix wrong name len assert When parsing engine name, at this point we have something like: "drm-engine-render: 232409619162 ns" ^ ^ | | name p We are copying the engine name to the final destination, but strlen(name) will actually contain the entire string. Since we already know the name length, calculated previously, just use it for copying the string. Since each name is 256-bytes long, the assert doesn't trigger easily, but it's better to be correct. And more efficient. Reviewed-by: Umesh Nerlige Ramappa Reviewed-by: Tvrtko Ursulin Reviewed-by: Tvrtko Ursulin Link: https://lore.kernel.org/r/20240430190150.3654507-1-lucas.demarchi@intel.com Signed-off-by: Lucas De Marchi --- lib/igt_drm_fdinfo.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/igt_drm_fdinfo.c b/lib/igt_drm_fdinfo.c index 18dbb5d0b..a1f4ad10d 100644 --- a/lib/igt_drm_fdinfo.c +++ b/lib/igt_drm_fdinfo.c @@ -90,8 +90,9 @@ static int parse_engine(char *line, struct drm_client_fdinfo *info, if (found < 0) { assert((info->num_engines + 1) < ARRAY_SIZE(info->names)); - assert((strlen(name) + 1) < sizeof(info->names[0])); - strncpy(info->names[info->num_engines], name, name_len); + assert(name_len < sizeof(info->names[0])); + memcpy(info->names[info->num_engines], name, name_len); + info->names[info->num_engines][name_len] = '\0'; found = info->num_engines; } } -- cgit v1.2.3