Message ID | tencent_C166F5A7CC6A8C93051C580B89260B10B006@qq.com |
---|---|
State | New |
Headers | show |
Series | [FFmpeg-devel,1/2] fftools/ffmpeg_filter: fix null pointer dereference | expand |
Context | Check | Description |
---|---|---|
yinshiyou/make_loongarch64 | success | Make finished |
yinshiyou/make_fate_loongarch64 | success | Make fate finished |
andriy/make_x86 | success | Make finished |
andriy/make_fate_x86 | success | Make fate finished |
Quoting Zhao Zhili (2023-12-17 12:01:09) > From: Zhao Zhili <zhilizhao@tencent.com> > > Signed-off-by: Zhao Zhili <zhilizhao@tencent.com> > --- > fftools/ffmpeg_enc.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/fftools/ffmpeg_enc.c b/fftools/ffmpeg_enc.c > index 9141dab6a4..ac38e8db75 100644 > --- a/fftools/ffmpeg_enc.c > +++ b/fftools/ffmpeg_enc.c > @@ -206,6 +206,7 @@ int enc_open(void *opaque, const AVFrame *frame) > > switch (enc_ctx->codec_type) { > case AVMEDIA_TYPE_AUDIO: > + av_assert0(frame->format != AV_SAMPLE_FMT_NONE); > enc_ctx->sample_fmt = frame->format; > enc_ctx->sample_rate = frame->sample_rate; > ret = av_channel_layout_copy(&enc_ctx->ch_layout, &frame->ch_layout); > @@ -227,6 +228,7 @@ int enc_open(void *opaque, const AVFrame *frame) > av_mul_q(ost->frame_aspect_ratio, (AVRational){ enc_ctx->height, enc_ctx->width }) : > frame->sample_aspect_ratio; > > + av_assert0(frame->format != AV_PIX_FMT_NONE); I'd prefer if you did this at the top of the block, right after case. Can also check dimensions for video and sample rate/channel layout for audio.
diff --git a/fftools/ffmpeg_enc.c b/fftools/ffmpeg_enc.c index 9141dab6a4..ac38e8db75 100644 --- a/fftools/ffmpeg_enc.c +++ b/fftools/ffmpeg_enc.c @@ -206,6 +206,7 @@ int enc_open(void *opaque, const AVFrame *frame) switch (enc_ctx->codec_type) { case AVMEDIA_TYPE_AUDIO: + av_assert0(frame->format != AV_SAMPLE_FMT_NONE); enc_ctx->sample_fmt = frame->format; enc_ctx->sample_rate = frame->sample_rate; ret = av_channel_layout_copy(&enc_ctx->ch_layout, &frame->ch_layout); @@ -227,6 +228,7 @@ int enc_open(void *opaque, const AVFrame *frame) av_mul_q(ost->frame_aspect_ratio, (AVRational){ enc_ctx->height, enc_ctx->width }) : frame->sample_aspect_ratio; + av_assert0(frame->format != AV_PIX_FMT_NONE); enc_ctx->pix_fmt = frame->format; if (ost->bits_per_raw_sample)