[FFmpeg-cvslog] libspeexdec: handle NULL return value from speex_packet_to_header()
Justin Ruggles
git at videolan.org
Thu Oct 4 13:18:03 CEST 2012
ffmpeg | branch: master | Justin Ruggles <justin.ruggles at gmail.com> | Wed Oct 3 17:26:16 2012 -0400| [c9df48909e03031aeb90facf9f307f3103691792] | committer: Justin Ruggles
libspeexdec: handle NULL return value from speex_packet_to_header()
This will happen when the extradata is not a valid Speex header.
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=c9df48909e03031aeb90facf9f307f3103691792
---
libavcodec/libspeexdec.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/libavcodec/libspeexdec.c b/libavcodec/libspeexdec.c
index 760bfe2..0c93f05 100644
--- a/libavcodec/libspeexdec.c
+++ b/libavcodec/libspeexdec.c
@@ -40,12 +40,17 @@ static av_cold int libspeex_decode_init(AVCodecContext *avctx)
{
LibSpeexContext *s = avctx->priv_data;
const SpeexMode *mode;
+ SpeexHeader *header = NULL;
int spx_mode;
avctx->sample_fmt = AV_SAMPLE_FMT_S16;
if (avctx->extradata && avctx->extradata_size >= 80) {
- SpeexHeader *header = speex_packet_to_header(avctx->extradata,
- avctx->extradata_size);
+ header = speex_packet_to_header(avctx->extradata,
+ avctx->extradata_size);
+ if (!header)
+ av_log(avctx, AV_LOG_WARNING, "Invalid Speex header\n");
+ }
+ if (header) {
avctx->channels = header->nb_channels;
spx_mode = header->mode;
speex_header_free(header);
More information about the ffmpeg-cvslog
mailing list