diff options
-rw-r--r-- | libavcodec/tiff.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/libavcodec/tiff.c b/libavcodec/tiff.c index f4ad773224..2e06e3ff0e 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; } |