[PATCH i-g-t 03/12] lib/igt_drm_fdinfo: Fix wrong name len assert
Tvrtko Ursulin
tursulin at ursulin.net
Fri Apr 19 07:49:59 UTC 2024
On 19/04/2024 08:48, Tvrtko Ursulin wrote:
>
> On 05/04/2024 07:00, Lucas De Marchi wrote:
>> 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.
>>
>> Signed-off-by: Lucas De Marchi <lucas.demarchi at intel.com>
>> ---
>> 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 7a9ae94f0..9b1776775 100644
>> --- a/lib/igt_drm_fdinfo.c
>> +++ b/lib/igt_drm_fdinfo.c
>> @@ -96,8 +96,9 @@ static int parse_engine(const char *name, 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;
>> }
>> }
>
> Ah a good fix.
>
> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
Oooh the muscle memory.. I knew this would happen sooner or later! :))
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin at igalia.com>
Regards,
Tvrtko
>
> Also, ideally fixes such as this and next few would be before
> refactoring in the series, but okay, not asking you to re-order.
>
> Regards,
>
> Tvrtko
>
> P.S. One extra space in the assert fwiw.
More information about the igt-dev
mailing list