[FFmpeg-devel] [RFC]lavu/timecode: Increase AV_TIMECODE_STR_SIZE.

Carl Eugen Hoyos ceffmpeg at gmail.com
Fri May 5 10:44:46 EEST 2017


2017-05-05 9:42 GMT+02:00 Aaron Levinson <alevinsn at aracnet.com>:
> On 5/5/2017 12:20 AM, Carl Eugen Hoyos wrote:
>>
>> 2017-05-05 3:29 GMT+02:00 Aaron Levinson <alevinsn at aracnet.com>:
>>>
>>> On 5/4/2017 4:27 PM, Carl Eugen Hoyos wrote:
>>>>
>>>>
>>>> Hi!
>>>>
>>>> Attached patch is one possibility to fix the following warning with gcc
>>>> 7:
>>>> libavutil/timecode.c: In function ‘av_timecode_make_string’:
>>>> libavutil/timecode.c:103:60: warning: ‘%02d’ directive output may be
>>>> truncated
>>>> writing between 2 and 10 bytes into a region of size between 0 and 7
>>>> [-Wformat-truncation=]
>>>>      snprintf(buf, AV_TIMECODE_STR_SIZE, "%s%02d:%02d:%02d%c%02d",
>>>>                                                             ^~~~
>>>> libavutil/timecode.c:103:41: note: directive argument in the range [0,
>>>> 2147483647]
>>>>      snprintf(buf, AV_TIMECODE_STR_SIZE, "%s%02d:%02d:%02d%c%02d",
>>>>                                          ^~~~~~~~~~~~~~~~~~~~~~~~
>>>> libavutil/timecode.c:103:5: note: ‘snprintf’ output between 12 and 32
>>>> bytes
>>>> into a destination of size 16
>>>>      snprintf(buf, AV_TIMECODE_STR_SIZE, "%s%02d:%02d:%02d%c%02d",
>>>>      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>>               neg ? "-" : "",
>>>>               ~~~~~~~~~~~~~~~
>>>>               hh, mm, ss, drop ? ';' : ':', ff);
>>>>               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>>
>>>> Several similar warnings are printed, an alternative is to disable the
>>>> warning.
>>>>
>>>> The warning seemed wrong on first sight but may actually be correct, we
>>>> accept invalid fps for timecode.
>>>
>>>
>>>
>>> Regarding the change in your patch:
>>>
>>> -#define AV_TIMECODE_STR_SIZE 16
>>> +#define AV_TIMECODE_STR_SIZE 23
>>>
>>> It seems like 23 characters wouldn't be sufficient based on the warning:
>>> "output between 12 and 32 bytes into a destination of size 16".  I would
>>> guess that you would need at least 32 characters and perhaps one more (?)
>>> for the terminating null character to avoid that warning.
>>
>>
>> How can I reproduce / test your findings?
>
>
> #define AV_TIMECODE_STR_SIZE 32 or 33 and confirm that gcc 7
> warnings go away.

Of course!
Since the warnings go away with 23, they also go away with 32.
I just wonder why 23 isn't enough in your opinion?

Carl Eugen


More information about the ffmpeg-devel mailing list