[FFmpeg-devel] [PATCH] avformat/argo_asf: Use memcpy to copy string without its NUL

Andreas Rheinhardt andreas.rheinhardt at outlook.com
Sun Sep 26 10:05:00 EEST 2021


Zane van Iperen:
> 
> 
> On 26/9/21 1:09 pm, Andreas Rheinhardt wrote:
>> This avoids a -Wstringop-truncation warning from GCC which takes
>> issue with the fact that the destination might not be NUL terminated.
>>
>> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
>> ---
>>   libavformat/argo_asf.c | 20 +++++++-------------
>>   1 file changed, 7 insertions(+), 13 deletions(-)
>>
>> diff --git a/libavformat/argo_asf.c b/libavformat/argo_asf.c
>> index 5adafb7230..0ef970df8a 100644
>> --- a/libavformat/argo_asf.c
>> +++ b/libavformat/argo_asf.c
>> @@ -356,25 +356,19 @@ static int argo_asf_write_header(AVFormatContext
>> *s)
>>           .num_chunks    = 1,
>>           .chunk_offset  = ASF_FILE_HEADER_SIZE
>>       };
>> +    const char *name = ctx->name, *end;
>> +    size_t len;
>>         /*
>>        * If the user specified a name, use it as is. Otherwise take the
>>        * basename and lop off the extension (if any).
>>        */
>> -    if (ctx->name) {
>> -        strncpy(fhdr.name, ctx->name, sizeof(fhdr.name));
>> -    } else {
>> -        const char *start = av_basename(s->url);
>> -        const char *end   = strrchr(start, '.');
>> -        size_t      len;
>> -
>> -        if (end)
>> -            len = end - start;
>> -        else
>> -            len = strlen(start);
>> +    if (name || !(end = strrchr(name = av_basename(s->url), '.'))) {
>> +        len = strlen(name);
>> +    } else
>> +        len = end - name;
>>   -        memcpy(fhdr.name, start, FFMIN(len, sizeof(fhdr.name)));
>> -    }
>> +    memcpy(fhdr.name, name, FFMIN(len, sizeof(fhdr.name)));
>>   
> 
> Minor formatting nits:
> * The first statement has braces, the second doesn't.
> * A set of parentheses around "name = av_basename(s->url)" would make
> things clearer.
> 
> Otherwise, lgtm.
> 

Applied with that changes. Thanks for the speedy review.

- Andreas


More information about the ffmpeg-devel mailing list