[FFmpeg-cvslog] tiff: continue parsing on non fatal errors
Michael Niedermayer
git at videolan.org
Sun Aug 11 18:38:22 CEST 2013
ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Sun Aug 11 14:16:09 2013 +0200| [61e0e809998f34d573111ee0d28c370793f422d1] | committer: Michael Niedermayer
tiff: continue parsing on non fatal errors
Reviewed-by: Thilo Borgmann <thilo.borgmann at mail.de>
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=61e0e809998f34d573111ee0d28c370793f422d1
---
libavcodec/tiff.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/libavcodec/tiff.c b/libavcodec/tiff.c
index f4ad773..2e06e3f 100644
--- a/libavcodec/tiff.c
+++ b/libavcodec/tiff.c
@@ -710,7 +710,7 @@ static int tiff_decode_tag(TiffContext *s, AVFrame *frame)
if (type == 0 || type >= FF_ARRAY_ELEMS(type_sizes)) {
av_log(s->avctx, AV_LOG_DEBUG, "Unknown tiff type (%u) encountered\n",
type);
- return 0;
+ goto end;
}
if (count == 1) {
@@ -928,7 +928,7 @@ static int tiff_decode_tag(TiffContext *s, AVFrame *frame)
#define ADD_METADATA(count, name, sep)\
if ((ret = add_metadata(count, type, name, sep, s, frame)) < 0) {\
av_log(s->avctx, AV_LOG_ERROR, "Error allocating temporary buffer\n");\
- return ret;\
+ goto end;\
}
case TIFF_MODEL_PIXEL_SCALE:
ADD_METADATA(count, "ModelPixelScaleTag", NULL);
@@ -955,7 +955,7 @@ static int tiff_decode_tag(TiffContext *s, AVFrame *frame)
if (!s->geotags) {
av_log(s->avctx, AV_LOG_ERROR, "Error allocating temporary buffer\n");
s->geotag_count = 0;
- return AVERROR(ENOMEM);
+ goto end;
}
for (i = 0; i < s->geotag_count; i++) {
s->geotags[i].key = tget_short(&s->gb, s->le);
@@ -976,7 +976,7 @@ static int tiff_decode_tag(TiffContext *s, AVFrame *frame)
dp = av_malloc(count * sizeof(double));
if (!dp) {
av_log(s->avctx, AV_LOG_ERROR, "Error allocating temporary buffer\n");
- return AVERROR(ENOMEM);
+ goto end;
}
for (i = 0; i < count; i++)
dp[i] = tget_double(&s->gb, s->le);
@@ -1064,6 +1064,7 @@ static int tiff_decode_tag(TiffContext *s, AVFrame *frame)
return AVERROR_INVALIDDATA;
}
}
+end:
bytestream2_seek(&s->gb, start, SEEK_SET);
return 0;
}
More information about the ffmpeg-cvslog
mailing list