[Mesa-dev] [PATCH] d3dadapter9: use snprintf(..., "%s", ...) instead of strncpy

Axel Davy davyaxel0 at gmail.com
Sat Dec 1 12:13:20 UTC 2018


Well, OK, I guess these snprintf call are an acceptable solution then.

Reviewed-by: Axel Davy <davyaxel0 at gmail.com>

On 26/11/2018 13:23, Andre Heider wrote:
> On 25/11/2018 17:23, Axel Davy wrote:
>> Reading 
>> https://developers.redhat.com/blog/2018/05/24/detecting-string-truncation-with-gcc-8/ 
>>
>> I think the snprintf variant suffers from the same issue, and the 
>> compiler is just not yet able to detect it,
>> and send the same warning (but it might do in later gcc versions).
>
> In this case we care about the terminating NULL (which strncpy() does 
> not ensure) and not really about the truncation, because all these 
> chunks are about D3DADAPTER_IDENTIFIER9.Description with a fixed size 
> of 512 chars.
>
> Even if those spots would get truncated, you won't get a warning about 
> it, see [0] ;)
>
>> Probably a better fix would be to copy with a max size of 
>> sizeof(drvid->Description)-1 and do
>> drvid->Description[sizeof(drvid->Description)-1] = '\0';
>> (Though the webpage says only doing the assignment should be 
>> sufficient to please gcc).
>
> Sure, but then mesa might as well import a helper like strlcpy() [1] 
> instead of doing that locally.
>
> For these few uncritical spots I think snprintf() is just fine, even 
> if a format specifier of just "%s" looks weird. But that's your call.
>
> Thanks,
> Andre
>
> [0] 97ae5a85 "meson+autotools: get rid of spammy GCC warning 
> -Wformat-truncation"
> [1] https://cgit.freedesktop.org/libbsd/tree/src/strlcpy.c
>



More information about the mesa-dev mailing list