summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-02-24 12:22:51 +0100
committerMichael Niedermayer <michaelni@gmx.at>2013-02-24 12:22:51 +0100
commit4ba35194a9d79b80a606aafe8744d82de5b4bcf4 (patch)
treede96700a80c207195a640fd4f7a60e4aafcdc60e
parentccc7bcc4fcaab51abfc618a8d74fb1e7f07005f1 (diff)
parentf935aca44c674d30e3ed940ef73bbad1228a5855 (diff)
Merge commit 'f935aca44c674d30e3ed940ef73bbad1228a5855'
* commit 'f935aca44c674d30e3ed940ef73bbad1228a5855': av_memcpy_backptr: avoid an infinite loop for back = 0 4xm: check the return value of read_huffman_tables(). Conflicts: libavcodec/4xm.c libavutil/mem.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavcodec/4xm.c6
-rw-r--r--libavutil/mem.c5
2 files changed, 8 insertions, 3 deletions
diff --git a/libavcodec/4xm.c b/libavcodec/4xm.c
index 406ca728ad..e3d8486941 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 6d3efaabfa..a7fe60837b 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);