From bfdca87ab55c7f69087d962dc47aa45c8c6436fb Mon Sep 17 00:00:00 2001 From: Jan Sebechlebsky Date: Tue, 26 Jul 2016 12:40:08 +0200 Subject: avcodec/bsf: Forbid packet without payload in av_bsf_send_packet Signed-off-by: Jan Sebechlebsky Signed-off-by: Michael Niedermayer --- libavcodec/avcodec.h | 3 ++- libavcodec/bsf.c | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'libavcodec') diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 3b21537d49..6c2c4a7003 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -5900,7 +5900,8 @@ int av_bsf_init(AVBSFContext *ctx); * av_bsf_receive_packet() repeatedly until it returns AVERROR(EAGAIN) or * AVERROR_EOF. * - * @param pkt the packet to filter. The bitstream filter will take ownership of + * @param pkt the packet to filter. pkt must contain some payload (i.e data or + * side data must be present in pkt). The bitstream filter will take ownership of * the packet and reset the contents of pkt. pkt is not touched if an error occurs. * This parameter may be NULL, which signals the end of the stream (i.e. no more * packets will be sent). That will cause the filter to output any packets it diff --git a/libavcodec/bsf.c b/libavcodec/bsf.c index 9b9ada796c..8e36861f14 100644 --- a/libavcodec/bsf.c +++ b/libavcodec/bsf.c @@ -21,6 +21,7 @@ #include "libavutil/log.h" #include "libavutil/mem.h" #include "libavutil/opt.h" +#include "libavutil/avassert.h" #include "avcodec.h" #include "bsf.h" @@ -177,6 +178,8 @@ int av_bsf_send_packet(AVBSFContext *ctx, AVPacket *pkt) return 0; } + av_assert0(pkt->data || pkt->side_data); + if (ctx->internal->eof) { av_log(ctx, AV_LOG_ERROR, "A non-NULL packet sent after an EOF.\n"); return AVERROR(EINVAL); -- cgit v1.2.3