[FFmpeg-devel] [PATCH] avfilter/af_adelay: make per channel delay argument an int64_t
Gyan Doshi
ffmpeg at gyani.pro
Fri Apr 23 16:09:52 EEST 2021
On 2021-04-23 18:22, James Almer wrote:
> Should fix ticket #9196
>
> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
> libavfilter/af_adelay.c | 11 +++++++----
> 1 file changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/libavfilter/af_adelay.c b/libavfilter/af_adelay.c
> index 6ac81c2a3e..1229bf5bc7 100644
> --- a/libavfilter/af_adelay.c
> +++ b/libavfilter/af_adelay.c
> @@ -28,9 +28,9 @@
> #include "internal.h"
>
> typedef struct ChanDelay {
> - int delay;
> - unsigned delay_index;
> - unsigned index;
> + int64_t delay;
> + size_t delay_index;
> + size_t index;
> uint8_t *samples;
> } ChanDelay;
>
> @@ -152,7 +152,7 @@ static int config_input(AVFilterLink *inlink)
>
> p = NULL;
>
> - ret = av_sscanf(arg, "%d%c", &d->delay, &type);
> + ret = av_sscanf(arg, "%"SCNd64"%c", &d->delay, &type);
> if (ret != 2 || type != 'S') {
> div = type == 's' ? 1.0 : 1000.0;
> if (av_sscanf(arg, "%f", &delay) != 1) {
> @@ -194,6 +194,9 @@ static int config_input(AVFilterLink *inlink)
> if (!d->delay)
> continue;
>
> + if (d->delay > SIZE_MAX)
> + return AVERROR(ENOMEM);
If this can occur due to user input, it should be reported back to the user.
> +
> d->samples = av_malloc_array(d->delay, s->block_align);
> if (!d->samples)
> return AVERROR(ENOMEM);
Regards,
Gyan
More information about the ffmpeg-devel
mailing list