summaryrefslogtreecommitdiffstats
path: root/libavformat/hlsenc.c
diff options
context:
space:
mode:
authorBrendan McGrath <redmcg@redmandi.dyndns.org>2018-01-21 13:16:42 +0800
committerSteven Liu <lq@chinaffmpeg.org>2018-01-21 13:16:42 +0800
commit2472dbc7a770a908a2f511ec337ec392ca3e3afa (patch)
treefc7d9e813edbd4be61da3639c7f293385162c686 /libavformat/hlsenc.c
parent777d6c677b1d70e9267c5e31c2c2473fa064076b (diff)
downloadffmpeg-streaming-2472dbc7a770a908a2f511ec337ec392ca3e3afa.zip
ffmpeg-streaming-2472dbc7a770a908a2f511ec337ec392ca3e3afa.tar.gz
avformat/hlsenc: Check that data is set
If codecpar->extradata is not set (for example, when the stream goes through the 'tee' muxer), then a segfault occurs. This patch ensures the data variable is not null before attempting to access it Before the var_stream_map option was available - I was using the tee muxer to create each resolution as an individual stream. When running this configuration after the most recent hlsenc change I hit a segfault The most simple command which recreates the segfault is: ffmpeg -i in.ts -map 0:a -map 0:v -c:a aac -c:v h264 -f tee [select=\'a,v\':f=hls]tv_hls_hd.m3u8 Signed-off-by: Brendan McGrath <redmcg@redmandi.dyndns.org>
Diffstat (limited to 'libavformat/hlsenc.c')
-rw-r--r--libavformat/hlsenc.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c
index 8ad906a..42e437f 100644
--- a/libavformat/hlsenc.c
+++ b/libavformat/hlsenc.c
@@ -308,7 +308,7 @@ static void write_codec_attr(AVStream *st, VariantStream *vs) {
if (st->codecpar->codec_id == AV_CODEC_ID_H264) {
uint8_t *data = st->codecpar->extradata;
- if ((data[0] | data[1] | data[2]) == 0 && data[3] == 1 && (data[4] & 0x1F) == 7) {
+ if (data && (data[0] | data[1] | data[2]) == 0 && data[3] == 1 && (data[4] & 0x1F) == 7) {
snprintf(attr, sizeof(attr),
"avc1.%02x%02x%02x", data[5], data[6], data[7]);
} else {
OpenPOWER on IntegriCloud