From 1bf747ae84fc7b1339ab4459d9d9ba2e9c341616 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Sat, 10 Jan 2015 19:24:27 +0100 Subject: avcodec/dvbsubdec: Return proper error codes from more functions Signed-off-by: Michael Niedermayer --- libavcodec/dvbsubdec.c | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) (limited to 'libavcodec/dvbsubdec.c') diff --git a/libavcodec/dvbsubdec.c b/libavcodec/dvbsubdec.c index 5099852bb7..ce68425b5b 100644 --- a/libavcodec/dvbsubdec.c +++ b/libavcodec/dvbsubdec.c @@ -1149,7 +1149,7 @@ static int dvbsub_parse_clut_segment(AVCodecContext *avctx, } -static void dvbsub_parse_region_segment(AVCodecContext *avctx, +static int dvbsub_parse_region_segment(AVCodecContext *avctx, const uint8_t *buf, int buf_size) { DVBSubContext *ctx = avctx->priv_data; @@ -1163,7 +1163,7 @@ static void dvbsub_parse_region_segment(AVCodecContext *avctx, int fill; if (buf_size < 10) - return; + return AVERROR_INVALIDDATA; region_id = *buf++; @@ -1172,7 +1172,7 @@ static void dvbsub_parse_region_segment(AVCodecContext *avctx, if (!region) { region = av_mallocz(sizeof(DVBSubRegion)); if (!region) - return; + return AVERROR(ENOMEM); region->id = region_id; region->version = -1; @@ -1265,9 +1265,11 @@ static void dvbsub_parse_region_segment(AVCodecContext *avctx, display->object_list_next = object->display_list; object->display_list = display; } + + return 0; } -static void dvbsub_parse_page_segment(AVCodecContext *avctx, +static int dvbsub_parse_page_segment(AVCodecContext *avctx, const uint8_t *buf, int buf_size, AVSubtitle *sub, int *got_output) { DVBSubContext *ctx = avctx->priv_data; @@ -1281,14 +1283,14 @@ static void dvbsub_parse_page_segment(AVCodecContext *avctx, int version; if (buf_size < 1) - return; + return AVERROR_INVALIDDATA; timeout = *buf++; version = ((*buf)>>4) & 15; page_state = ((*buf++) >> 2) & 3; if (ctx->version == version) { - return; + return 0; } ctx->time_out = timeout; @@ -1346,6 +1348,7 @@ static void dvbsub_parse_page_segment(AVCodecContext *avctx, av_freep(&display); } + return 0; } @@ -1444,7 +1447,7 @@ static void save_display_set(DVBSubContext *ctx) } #endif -static void dvbsub_parse_display_definition_segment(AVCodecContext *avctx, +static int dvbsub_parse_display_definition_segment(AVCodecContext *avctx, const uint8_t *buf, int buf_size) { @@ -1453,19 +1456,19 @@ static void dvbsub_parse_display_definition_segment(AVCodecContext *avctx, int dds_version, info_byte; if (buf_size < 5) - return; + return AVERROR_INVALIDDATA; info_byte = bytestream_get_byte(&buf); dds_version = info_byte >> 4; if (display_def && display_def->version == dds_version) - return; // already have this display definition version + return 0; // already have this display definition version if (!display_def) { display_def = av_mallocz(sizeof(*display_def)); ctx->display_definition = display_def; } if (!display_def) - return; + return AVERROR(ENOMEM); display_def->version = dds_version; display_def->x = 0; @@ -1478,7 +1481,7 @@ static void dvbsub_parse_display_definition_segment(AVCodecContext *avctx, } if (buf_size < 13) - return; + return 0; if (info_byte & 1<<3) { // display_window_flag display_def->x = bytestream_get_be16(&buf); @@ -1486,6 +1489,8 @@ static void dvbsub_parse_display_definition_segment(AVCodecContext *avctx, display_def->y = bytestream_get_be16(&buf); display_def->height = bytestream_get_be16(&buf) - display_def->y + 1; } + + return 0; } static void dvbsub_display_end_segment(AVCodecContext *avctx, const uint8_t *buf, -- cgit v1.2.3