diff --git a/libavcodec/smacker.c b/libavcodec/smacker.c index 27de30f0e1..c249ce7514 100644 --- a/libavcodec/smacker.c +++ b/libavcodec/smacker.c @@ -197,14 +197,15 @@ static int smacker_decode_header_tree(SmackVContext *smk, GetBitContext *gb, int for (int i = 0; i < 2; i++) { h[i].length = 256; h[i].current = 0; - h[i].bits = av_mallocz(256 * sizeof(h[i].bits[0])); - h[i].lengths = av_mallocz(256 * sizeof(h[i].lengths[0])); - h[i].values = av_mallocz(256 * sizeof(h[i].values[0])); + h[i].bits = av_malloc(256 * sizeof(h[i].bits[0])); + h[i].lengths = av_malloc(256 * sizeof(h[i].lengths[0])); + h[i].values = av_malloc(256 * sizeof(h[i].values[0])); if (!h[i].bits || !h[i].lengths || !h[i].values) { err = AVERROR(ENOMEM); goto error; } if (!get_bits1(gb)) { + h[i].values[0] = 0; av_log(smk->avctx, AV_LOG_ERROR, "Skipping %s bytes tree\n", i ? "high" : "low"); continue; @@ -242,7 +243,7 @@ static int smacker_decode_header_tree(SmackVContext *smk, GetBitContext *gb, int huff.length = (size + 3) >> 2; huff.current = 0; - huff.values = av_mallocz_array(huff.length + 3, sizeof(huff.values[0])); + huff.values = av_malloc_array(huff.length + 3, sizeof(huff.values[0])); if (!huff.values) { err = AVERROR(ENOMEM); goto error; @@ -645,9 +646,9 @@ static int smka_decode_frame(AVCodecContext *avctx, void *data, for(i = 0; i < (1 << (bits + stereo)); i++) { h[i].length = 256; h[i].current = 0; - h[i].bits = av_mallocz(256 * 4); - h[i].lengths = av_mallocz(256 * sizeof(int)); - h[i].values = av_mallocz(256 * sizeof(int)); + h[i].bits = av_malloc(256 * sizeof(h[i].bits)); + h[i].lengths = av_malloc(256 * sizeof(h[i].lengths)); + h[i].values = av_malloc(256 * sizeof(h[i].values)); if (!h[i].bits || !h[i].lengths || !h[i].values) { ret = AVERROR(ENOMEM); goto error;