lcl: return negative error codes on decode_init() errors.

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable@libav.org
(cherry picked from commit bd17a40a7e)

Signed-off-by: Reinhard Tartler <siretart@tauware.de>
This commit is contained in:
Ronald S. Bultje 2012-02-29 17:50:28 -08:00 committed by Reinhard Tartler
parent 7f3f85544c
commit 7e88df99e1

View File

@ -476,7 +476,7 @@ static av_cold int decode_init(AVCodecContext *avctx)
if (avctx->extradata_size < 8) { if (avctx->extradata_size < 8) {
av_log(avctx, AV_LOG_ERROR, "Extradata size too small.\n"); av_log(avctx, AV_LOG_ERROR, "Extradata size too small.\n");
return 1; return AVERROR_INVALIDDATA;
} }
/* Check codec type */ /* Check codec type */
@ -525,7 +525,7 @@ static av_cold int decode_init(AVCodecContext *avctx)
break; break;
default: default:
av_log(avctx, AV_LOG_ERROR, "Unsupported image format %d.\n", c->imgtype); av_log(avctx, AV_LOG_ERROR, "Unsupported image format %d.\n", c->imgtype);
return 1; return AVERROR_INVALIDDATA;
} }
/* Detect compression method */ /* Detect compression method */
@ -542,7 +542,7 @@ static av_cold int decode_init(AVCodecContext *avctx)
break; break;
default: default:
av_log(avctx, AV_LOG_ERROR, "Unsupported compression format for MSZH (%d).\n", c->compression); av_log(avctx, AV_LOG_ERROR, "Unsupported compression format for MSZH (%d).\n", c->compression);
return 1; return AVERROR_INVALIDDATA;
} }
break; break;
#if CONFIG_ZLIB_DECODER #if CONFIG_ZLIB_DECODER
@ -560,7 +560,7 @@ static av_cold int decode_init(AVCodecContext *avctx)
default: default:
if (c->compression < Z_NO_COMPRESSION || c->compression > Z_BEST_COMPRESSION) { if (c->compression < Z_NO_COMPRESSION || c->compression > Z_BEST_COMPRESSION) {
av_log(avctx, AV_LOG_ERROR, "Unsupported compression level for ZLIB: (%d).\n", c->compression); av_log(avctx, AV_LOG_ERROR, "Unsupported compression level for ZLIB: (%d).\n", c->compression);
return 1; return AVERROR_INVALIDDATA;
} }
av_log(avctx, AV_LOG_DEBUG, "Compression level for ZLIB: (%d).\n", c->compression); av_log(avctx, AV_LOG_DEBUG, "Compression level for ZLIB: (%d).\n", c->compression);
} }
@ -568,14 +568,14 @@ static av_cold int decode_init(AVCodecContext *avctx)
#endif #endif
default: default:
av_log(avctx, AV_LOG_ERROR, "BUG! Unknown codec in compression switch.\n"); av_log(avctx, AV_LOG_ERROR, "BUG! Unknown codec in compression switch.\n");
return 1; return AVERROR_INVALIDDATA;
} }
/* Allocate decompression buffer */ /* Allocate decompression buffer */
if (c->decomp_size) { if (c->decomp_size) {
if ((c->decomp_buf = av_malloc(max_decomp_size)) == NULL) { if ((c->decomp_buf = av_malloc(max_decomp_size)) == NULL) {
av_log(avctx, AV_LOG_ERROR, "Can't allocate decompression buffer.\n"); av_log(avctx, AV_LOG_ERROR, "Can't allocate decompression buffer.\n");
return 1; return AVERROR(ENOMEM);
} }
} }
@ -601,7 +601,7 @@ static av_cold int decode_init(AVCodecContext *avctx)
if (zret != Z_OK) { if (zret != Z_OK) {
av_log(avctx, AV_LOG_ERROR, "Inflate init error: %d\n", zret); av_log(avctx, AV_LOG_ERROR, "Inflate init error: %d\n", zret);
av_freep(&c->decomp_buf); av_freep(&c->decomp_buf);
return 1; return AVERROR_UNKNOWN;
} }
} }
#endif #endif