[FFmpeg-devel] [PATCH] avformat/hls: use av_strlcopy instead of strncpy

Leo Izen leo.izen at gmail.com
Thu Oct 26 14:08:47 EEST 2023


On 10/26/23 06:54, Andreas Rheinhardt wrote:
> Leo Izen:
>> Avoids a -Wstringop-truncation warning by using av_strlcopy instead of
>> strncpy.
>>
>> Signed-off-by: Leo Izen <leo.izen at gmail.com>
>> ---
>>   libavformat/hls.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/libavformat/hls.c b/libavformat/hls.c
>> index f5f549b24d..076f92ecfb 100644
>> --- a/libavformat/hls.c
>> +++ b/libavformat/hls.c
>> @@ -543,7 +543,7 @@ static struct rendition *new_rendition(HLSContext *c, struct rendition_info *inf
>>           int langlen = strlen(rend->language);
>>           if (langlen < sizeof(rend->language) - 3) {
>>               rend->language[langlen] = ',';
>> -            strncpy(rend->language + langlen + 1, info->assoc_language,
>> +            av_strlcpy(rend->language + langlen + 1, info->assoc_language,
>>                       sizeof(rend->language) - langlen - 2);
>>           }
>>       }
> 
> Doesn't this just silence the warning instead of fixing the potential
> truncation?
> 
> - Andreas
> 

The semantics of strlcpy and strncpy are slightly different. strlcopy 
*always* nul-terminates the destination string. strncpy zeroes the 
buffer and then runs memcpy, so if it would overflow the buffer the 
string ends up without a nul-terminator. The warning triggers because 
the compiler thinks that case can occur.

- Leo Izen


More information about the ffmpeg-devel mailing list