summaryrefslogtreecommitdiff
path: root/libavcodec/hevcdec.c
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2021-02-11 01:11:29 -0300
committerJames Almer <jamrial@gmail.com>2021-02-11 13:51:25 -0300
commit22edf7463c4d6d2dfe9c8673d163120a8a50911a (patch)
treeb98747f7c11123025a6fff5ecb399498277e1eda /libavcodec/hevcdec.c
parent089706e009240ce3dc76f09ae9eee0ba98e65bd1 (diff)
avcodec/hevcdec: add some missing allocation checks
Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavcodec/hevcdec.c')
-rw-r--r--libavcodec/hevcdec.c25
1 files changed, 19 insertions, 6 deletions
diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c
index 2dbbc6d2b3..9e41136aec 100644
--- a/libavcodec/hevcdec.c
+++ b/libavcodec/hevcdec.c
@@ -515,6 +515,9 @@ static int set_sps(HEVCContext *s, const HEVCSPS *sps,
s->sao_pixel_buffer_v[c_idx] =
av_malloc((h * 2 * sps->ctb_width) <<
sps->pixel_shift);
+ if (!s->sao_pixel_buffer_h[c_idx] ||
+ !s->sao_pixel_buffer_v[c_idx])
+ goto fail;
}
}
@@ -525,6 +528,10 @@ static int set_sps(HEVCContext *s, const HEVCSPS *sps,
fail:
pic_arrays_free(s);
+ for (i = 0; i < 3; i++) {
+ av_freep(&s->sao_pixel_buffer_h[i]);
+ av_freep(&s->sao_pixel_buffer_v[i]);
+ }
s->ps.sps = NULL;
return ret;
}
@@ -2624,13 +2631,19 @@ static int hls_slice_data_wpp(HEVCContext *s, const H2645NAL *nal)
ff_alloc_entries(s->avctx, s->sh.num_entry_point_offsets + 1);
- if (!s->sList[1]) {
- for (i = 1; i < s->threads_number; i++) {
- s->sList[i] = av_malloc(sizeof(HEVCContext));
- memcpy(s->sList[i], s, sizeof(HEVCContext));
- s->HEVClcList[i] = av_mallocz(sizeof(HEVCLocalContext));
- s->sList[i]->HEVClc = s->HEVClcList[i];
+ for (i = 1; i < s->threads_number; i++) {
+ if (s->sList[i] && s->HEVClcList[i])
+ continue;
+ av_freep(&s->sList[i]);
+ av_freep(&s->HEVClcList[i]);
+ s->sList[i] = av_malloc(sizeof(HEVCContext));
+ s->HEVClcList[i] = av_mallocz(sizeof(HEVCLocalContext));
+ if (!s->sList[i] || !s->HEVClcList[i]) {
+ res = AVERROR_INVALIDDATA;
+ goto error;
}
+ memcpy(s->sList[i], s, sizeof(HEVCContext));
+ s->sList[i]->HEVClc = s->HEVClcList[i];
}
offset = (lc->gb.index >> 3);