Commit 665759c3 authored by Steven Liu's avatar Steven Liu

avformat/dashdec: check copy_init_section memory alloc result

Signed-off-by: 's avatarSteven Liu <lq@chinaffmpeg.org>
parent 6f82bf9d
...@@ -2008,13 +2008,19 @@ static int is_common_init_section_exist(struct representation **pls, int n_pls) ...@@ -2008,13 +2008,19 @@ static int is_common_init_section_exist(struct representation **pls, int n_pls)
return 1; return 1;
} }
static void copy_init_section(struct representation *rep_dest, struct representation *rep_src) static int copy_init_section(struct representation *rep_dest, struct representation *rep_src)
{ {
rep_dest->init_sec_buf = av_mallocz(rep_src->init_sec_buf_size); rep_dest->init_sec_buf = av_mallocz(rep_src->init_sec_buf_size);
if (!rep_dest->init_sec_buf) {
av_log(rep_dest->ctx, AV_LOG_WARNING, "Cannot alloc memory for init_sec_buf\n");
return AVERROR(ENOMEM);
}
memcpy(rep_dest->init_sec_buf, rep_src->init_sec_buf, rep_src->init_sec_data_len); memcpy(rep_dest->init_sec_buf, rep_src->init_sec_buf, rep_src->init_sec_data_len);
rep_dest->init_sec_buf_size = rep_src->init_sec_buf_size; rep_dest->init_sec_buf_size = rep_src->init_sec_buf_size;
rep_dest->init_sec_data_len = rep_src->init_sec_data_len; rep_dest->init_sec_data_len = rep_src->init_sec_data_len;
rep_dest->cur_timestamp = rep_src->cur_timestamp; rep_dest->cur_timestamp = rep_src->cur_timestamp;
return 0;
} }
...@@ -2048,7 +2054,9 @@ static int dash_read_header(AVFormatContext *s) ...@@ -2048,7 +2054,9 @@ static int dash_read_header(AVFormatContext *s)
for (i = 0; i < c->n_videos; i++) { for (i = 0; i < c->n_videos; i++) {
struct representation *cur_video = c->videos[i]; struct representation *cur_video = c->videos[i];
if (i > 0 && c->is_init_section_common_video) { if (i > 0 && c->is_init_section_common_video) {
copy_init_section(cur_video,c->videos[0]); ret = copy_init_section(cur_video,c->videos[0]);
if (ret < 0)
goto fail;
} }
ret = open_demux_for_component(s, cur_video); ret = open_demux_for_component(s, cur_video);
...@@ -2064,7 +2072,9 @@ static int dash_read_header(AVFormatContext *s) ...@@ -2064,7 +2072,9 @@ static int dash_read_header(AVFormatContext *s)
for (i = 0; i < c->n_audios; i++) { for (i = 0; i < c->n_audios; i++) {
struct representation *cur_audio = c->audios[i]; struct representation *cur_audio = c->audios[i];
if (i > 0 && c->is_init_section_common_audio) { if (i > 0 && c->is_init_section_common_audio) {
copy_init_section(cur_audio,c->audios[0]); ret = copy_init_section(cur_audio,c->audios[0]);
if (ret < 0)
goto fail;
} }
ret = open_demux_for_component(s, cur_audio); ret = open_demux_for_component(s, cur_audio);
...@@ -2080,7 +2090,9 @@ static int dash_read_header(AVFormatContext *s) ...@@ -2080,7 +2090,9 @@ static int dash_read_header(AVFormatContext *s)
for (i = 0; i < c->n_subtitles; i++) { for (i = 0; i < c->n_subtitles; i++) {
struct representation *cur_subtitle = c->subtitles[i]; struct representation *cur_subtitle = c->subtitles[i];
if (i > 0 && c->is_init_section_common_audio) { if (i > 0 && c->is_init_section_common_audio) {
copy_init_section(cur_subtitle,c->subtitles[0]); ret = copy_init_section(cur_subtitle,c->subtitles[0]);
if (ret < 0)
goto fail;
} }
ret = open_demux_for_component(s, cur_subtitle); ret = open_demux_for_component(s, cur_subtitle);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment