summaryrefslogtreecommitdiff
path: root/libavcodec/fic.c
diff options
context:
space:
mode:
authorCarl Eugen Hoyos <cehoyos@ag.or.at>2014-11-03 00:43:08 +0100
committerCarl Eugen Hoyos <cehoyos@ag.or.at>2014-11-03 00:43:08 +0100
commitd457478fb0283d13886d433345ea323b862af9ae (patch)
tree226c5ceba5940e22bd8e58bfe647a95b4d3efb70 /libavcodec/fic.c
parente6b7246a688bfd7e3a52c3ec639fa0f92c4bfc09 (diff)
Silence warnings for fic files with zero-sized cursors.
Fixes ticket #4072.
Diffstat (limited to 'libavcodec/fic.c')
-rw-r--r--libavcodec/fic.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/libavcodec/fic.c b/libavcodec/fic.c
index 5615e69abc..adc8a25d4c 100644
--- a/libavcodec/fic.c
+++ b/libavcodec/fic.c
@@ -308,7 +308,10 @@ static int fic_decode_frame(AVCodecContext *avctx, void *data,
return AVERROR_INVALIDDATA;
}
- if (tsize < 32) {
+ if (!tsize)
+ skip_cursor = 1;
+
+ if (!skip_cursor && tsize < 32) {
av_log(avctx, AV_LOG_WARNING,
"Cursor data too small. Skipping cursor.\n");
skip_cursor = 1;
@@ -317,14 +320,14 @@ static int fic_decode_frame(AVCodecContext *avctx, void *data,
/* Cursor position. */
cur_x = AV_RL16(src + 33);
cur_y = AV_RL16(src + 35);
- if (cur_x > avctx->width || cur_y > avctx->height) {
+ if (!skip_cursor && (cur_x > avctx->width || cur_y > avctx->height)) {
av_log(avctx, AV_LOG_WARNING,
"Invalid cursor position: (%d,%d). Skipping cusor.\n",
cur_x, cur_y);
skip_cursor = 1;
}
- if (AV_RL16(src + 37) != 32 || AV_RL16(src + 39) != 32) {
+ if (!skip_cursor && (AV_RL16(src + 37) != 32 || AV_RL16(src + 39) != 32)) {
av_log(avctx, AV_LOG_WARNING,
"Invalid cursor size. Skipping cursor.\n");
skip_cursor = 1;