diff --git a/libavcodec/4xm.c b/libavcodec/4xm.c index 406ca728ad8f223307f532def2d753a71e2ab6c8..e3d8486941af2e138ff6adfdaeff0f4105487937 100644 --- a/libavcodec/4xm.c +++ b/libavcodec/4xm.c @@ -757,8 +757,10 @@ static int decode_i_frame(FourXContext *f, const uint8_t *buf, int length) } prestream = read_huffman_tables(f, prestream, buf + length - prestream); - if (!prestream) - return -1; + if (!prestream) { + av_log(f->avctx, AV_LOG_ERROR, "Error reading Huffman tables.\n"); + return AVERROR_INVALIDDATA; + } av_assert0(prestream <= buf + length); diff --git a/libavutil/mem.c b/libavutil/mem.c index 6d3efaabfa39f6d2f04f01a08a02d99607362a4a..a7fe60837bf8984505b20271f5c3d731f4a6c54c 100644 --- a/libavutil/mem.c +++ b/libavutil/mem.c @@ -323,7 +323,10 @@ static void fill32(uint8_t *dst, int len) void av_memcpy_backptr(uint8_t *dst, int back, int cnt) { const uint8_t *src = &dst[-back]; - if (back <= 1) { + if (!back) + return; + + if (back == 1) { memset(dst, *src, cnt); } else if (back == 2) { fill16(dst, cnt);