repositories
/
deb_ffmpeg.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Imported Debian version 2.5.0~trusty1.1
[deb_ffmpeg.git]
/
ffmpeg
/
libavcodec
/
fic.c
diff --git
a/ffmpeg/libavcodec/fic.c
b/ffmpeg/libavcodec/fic.c
index 5615e69abce7e1a97a0d2e99d0f79ca32f3cadc0..adc8a25d4c979e04da25905a622b3b15981c5aba 100644
(file)
--- a/
ffmpeg/libavcodec/fic.c
+++ b/
ffmpeg/libavcodec/fic.c
@@
-308,7
+308,10
@@
static int fic_decode_frame(AVCodecContext *avctx, void *data,
return AVERROR_INVALIDDATA;
}
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;
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);
/* 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;
}
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;
av_log(avctx, AV_LOG_WARNING,
"Invalid cursor size. Skipping cursor.\n");
skip_cursor = 1;