Commit 2b011a43 authored by Anton Khirnov's avatar Anton Khirnov

bmv: return meaningful error codes.

parent abcc2354
...@@ -67,7 +67,7 @@ static int decode_bmv_frame(const uint8_t *source, int src_len, uint8_t *frame, ...@@ -67,7 +67,7 @@ static int decode_bmv_frame(const uint8_t *source, int src_len, uint8_t *frame,
int i; int i;
if (src_len <= 0) if (src_len <= 0)
return -1; return AVERROR_INVALIDDATA;
if (forward) { if (forward) {
src = source; src = source;
...@@ -91,7 +91,7 @@ static int decode_bmv_frame(const uint8_t *source, int src_len, uint8_t *frame, ...@@ -91,7 +91,7 @@ static int decode_bmv_frame(const uint8_t *source, int src_len, uint8_t *frame,
*/ */
if (!mode || (tmplen == 4)) { if (!mode || (tmplen == 4)) {
if (src < source || src >= source_end) if (src < source || src >= source_end)
return -1; return AVERROR_INVALIDDATA;
val = *src; val = *src;
read_two_nibbles = 1; read_two_nibbles = 1;
} else { } else {
...@@ -102,7 +102,7 @@ static int decode_bmv_frame(const uint8_t *source, int src_len, uint8_t *frame, ...@@ -102,7 +102,7 @@ static int decode_bmv_frame(const uint8_t *source, int src_len, uint8_t *frame,
for (;;) { for (;;) {
if (!read_two_nibbles) { if (!read_two_nibbles) {
if (src < source || src >= source_end) if (src < source || src >= source_end)
return -1; return AVERROR_INVALIDDATA;
shift += 2; shift += 2;
val |= *src << shift; val |= *src << shift;
if (*src & 0xC) if (*src & 0xC)
...@@ -137,7 +137,7 @@ static int decode_bmv_frame(const uint8_t *source, int src_len, uint8_t *frame, ...@@ -137,7 +137,7 @@ static int decode_bmv_frame(const uint8_t *source, int src_len, uint8_t *frame,
if (mode >= 4) if (mode >= 4)
mode -= 3; mode -= 3;
if (FFABS(dst_end - dst) < len) if (FFABS(dst_end - dst) < len)
return -1; return AVERROR_INVALIDDATA;
switch (mode) { switch (mode) {
case 1: case 1:
if (forward) { if (forward) {
...@@ -145,7 +145,7 @@ static int decode_bmv_frame(const uint8_t *source, int src_len, uint8_t *frame, ...@@ -145,7 +145,7 @@ static int decode_bmv_frame(const uint8_t *source, int src_len, uint8_t *frame,
dst - frame + SCREEN_WIDE + frame_off < 0 || dst - frame + SCREEN_WIDE + frame_off < 0 ||
frame_end - dst < frame_off + len || frame_end - dst < frame_off + len ||
frame_end - dst < len) frame_end - dst < len)
return -1; return AVERROR_INVALIDDATA;
for (i = 0; i < len; i++) for (i = 0; i < len; i++)
dst[i] = dst[frame_off + i]; dst[i] = dst[frame_off + i];
dst += len; dst += len;
...@@ -155,7 +155,7 @@ static int decode_bmv_frame(const uint8_t *source, int src_len, uint8_t *frame, ...@@ -155,7 +155,7 @@ static int decode_bmv_frame(const uint8_t *source, int src_len, uint8_t *frame,
dst - frame + SCREEN_WIDE + frame_off < 0 || dst - frame + SCREEN_WIDE + frame_off < 0 ||
frame_end - dst < frame_off + len || frame_end - dst < frame_off + len ||
frame_end - dst < len) frame_end - dst < len)
return -1; return AVERROR_INVALIDDATA;
for (i = len - 1; i >= 0; i--) for (i = len - 1; i >= 0; i--)
dst[i] = dst[frame_off + i]; dst[i] = dst[frame_off + i];
} }
...@@ -163,13 +163,13 @@ static int decode_bmv_frame(const uint8_t *source, int src_len, uint8_t *frame, ...@@ -163,13 +163,13 @@ static int decode_bmv_frame(const uint8_t *source, int src_len, uint8_t *frame,
case 2: case 2:
if (forward) { if (forward) {
if (source + src_len - src < len) if (source + src_len - src < len)
return -1; return AVERROR_INVALIDDATA;
memcpy(dst, src, len); memcpy(dst, src, len);
dst += len; dst += len;
src += len; src += len;
} else { } else {
if (src - source < len) if (src - source < len)
return -1; return AVERROR_INVALIDDATA;
dst -= len; dst -= len;
src -= len; src -= len;
memcpy(dst, src, len); memcpy(dst, src, len);
......
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