From patchwork Tue Jun 15 23:32:10 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 28338 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a5e:c91a:0:0:0:0:0 with SMTP id z26csp4312074iol; Tue, 15 Jun 2021 16:36:09 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyaxdyBsBhwumUXhajJZOCAp2un9iuvrQmVduGh8SZaI3zNL61alW5BWGWCwbEP0gITwQWR X-Received: by 2002:aa7:ccc1:: with SMTP id y1mr679304edt.333.1623800169116; Tue, 15 Jun 2021 16:36:09 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id c16si422175ejj.702.2021.06.15.16.36.08; Tue, 15 Jun 2021 16:36:09 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b=BKsL6Lwv; arc=fail (body hash mismatch); spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 067416881EB; Wed, 16 Jun 2021 02:33:36 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2018.outbound.protection.outlook.com [40.92.90.18]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E89FA680BA4 for ; Wed, 16 Jun 2021 02:33:31 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=F4UfS20mGmvY7wAZ5VYoCdyZs05gSiqan38/3p5eaAwftT2/uvbeZUdAN62qUA187BWHfCUYqjZbCmCbGaMWVM1rCcize6G4yrtu/3Ok2nAKgqQ+j/38BFM9dtpWBuF1WEMUIYq7SJ16s+SZYs2YrPWiW5P2MOONlhLj9VMm2BThVHRuCGYBUc6TfZ0yP9V+6joHMvqzjIsBJd6wsuV7vsnP1ELUqjA2S87y0bcx8gGpQfKjyKDpavW8eXxZmoPN9ZSAvlZBgSUTE3q1ZtVMIwhmkDoIqSJjyZNVZjHB4ihyUdIQmPk43DNXzbXhsGgYFoyiywneqPRmTaK16KaZmg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Xtb/PUuaRz8agLp0IEjXRchPYoG10zuXCa5e7bhhUbY=; b=kZ/UCJxB9kwkLfqugodq9GHw+XaA4S+WpbKllATB0h9wSSOom1WaJ+5uU3g3EU866bQtWc8gRdt2WGUu2UX9ANw2+MOGtTZvaZIQr4pIe27KbS75xCWEPW9w8SL8daIx20FVKXNN5LI87kOVz/SFCMpbEXtXyJgPu9leQP/rr7YMKTkAmD2oc3C5AfqLf01sDWVh6kGo04cykmGBiLT96CdN2uQzG7Uwhpk+2OGgRn2Rf9KcRGcmSyR99QLAbUCDhfEOiR2/NTmndDZUzl1lQZNZe4FSQchsrmrK/1nbw5i6vUDs+nYB/9+EIySWwxYy+JumVSW3x//Fhjq6uqgmNQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Xtb/PUuaRz8agLp0IEjXRchPYoG10zuXCa5e7bhhUbY=; b=BKsL6LwvJS/0lE8vqzeVPLfiH5ggNI7uGY+30YPr+gpBcwt2jMKC8cVWseyxb3mu6QFVFyYfiabS9QiuqAfrwejXthzc2VPnJmQmOXn6DUmr8z4CalKJ/H4GqUpDRuLtlO2eV/GyBJWSYVAABQGVi/kOcpMX8cIKzpdyWLQCIEoAh0Za2Qz5YIoHb4VCdJV39MVfJdVMQdLwTPll79gZdPQ2xtwmW5Urys8+ZfQ1QYOVivzhr3EKjjBfUzN2VZ7ngdiWQ1k8dwEvHQg2PIcxEpO1+A3kI4qSXJ7Sh5SbUGQlAbLwtLtqY/GkTvy2njb2OiQw+KMAEzNZOBleXZOPFA== Received: from DB8EUR05FT045.eop-eur05.prod.protection.outlook.com (2a01:111:e400:fc0f::40) by DB8EUR05HT004.eop-eur05.prod.protection.outlook.com (2a01:111:e400:fc0f::455) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.21; Tue, 15 Jun 2021 23:33:30 +0000 Received: from HE1PR0301MB2154.eurprd03.prod.outlook.com (2a01:111:e400:fc0f::46) by DB8EUR05FT045.mail.protection.outlook.com (2a01:111:e400:fc0f::383) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4242.16 via Frontend Transport; Tue, 15 Jun 2021 23:33:30 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:3BC1EAE07490F89CF39E541D310947570572D053FF9BC69B5D097E1C133F1D53; UpperCasedChecksum:14761E2D286E94FA5C1E377ACAF5AD2C95659F967B54F3690480589815828EA4; SizeAsReceived:7598; Count:48 Received: from HE1PR0301MB2154.eurprd03.prod.outlook.com ([fe80::f4cc:63fc:9cef:37fb]) by HE1PR0301MB2154.eurprd03.prod.outlook.com ([fe80::f4cc:63fc:9cef:37fb%6]) with mapi id 15.20.4219.025; Tue, 15 Jun 2021 23:33:30 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 16 Jun 2021 01:32:10 +0200 Message-ID: X-Mailer: git-send-email 2.27.0 In-Reply-To: References: X-TMN: [po6vGK+meQq6TT1H8F0ZcbKjm1BRQNb+] X-ClientProxiedBy: PR3P189CA0063.EURP189.PROD.OUTLOOK.COM (2603:10a6:102:b4::8) To HE1PR0301MB2154.eurprd03.prod.outlook.com (2603:10a6:3:2a::22) X-Microsoft-Original-Message-ID: <20210615233243.1173928-20-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.97.82) by PR3P189CA0063.EURP189.PROD.OUTLOOK.COM (2603:10a6:102:b4::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.20 via Frontend Transport; Tue, 15 Jun 2021 23:33:29 +0000 X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 48 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: cb6aab27-b9ff-481b-c9ea-08d93055fb68 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiR9SlwCHtPrt+MV8TUUwp4p0OETr0+Jrn2aW1jxIgMYUWxrVQUWcB05H27dFzDJ1p0qd9HHQkL62yPUAWov4+5oM1NBLIpbybXa1pRJD0PmsTKgL7Jgy63fm7sXv78vi9KU6cTn9Iyb60Gcdl0piPJoQ30TEim87UPqWrSxbnl7sE290S9QM5t2pRxrgg0DJ9OUScu7e4NHNERLWhPPFHcTsoy7OWUM5vl/UCdYY5LxBkz42xkvtFuQxmqyQtYrAg/kPs+fXq1wyWgY/sc48fhRVBIvrExEGH7FG7MXq9HXHv4Z+r2IVDkrxeQzngLJjPbYiU7Yja7TyXygTuiVG3BogufWGcH7O5QaXJNxqsTvXtxKz9us3kKFTqewuCOOq0K3Saw17lCjCsuoE5RvBdeakWXGjmCEp0IsX+wtBMI97soGouaww5TK5fLtj/41RVDkBiSR4T6wO3yU0krkd9SiSxhSPOK2OMSnZ3aDrKvKdPNIPUeM7y9YToYQKP7r31FMVImOt3B+zPQXsOL6JVKmCXawKg8WmsLGlkFP12GFSMJxQln22fdHhxn1GY82xJ2IpHETGH/XaJEzQD/CNQGnawTrnQ1hiF3NFoqM9KQANcJu4DTJszqpdYn7MutaaDXHfikIk7stFwM3sBoWO4Cv8GICxa/XH2Wx2PzlGkRKF7hlgVn9CpFJEzciH67WdS+jmOQcHOldBNku1ymkyGQdLQw1K/zOHTQdlK6wjZ+4ocoFlH4uesQ1hO80gnP6EH0= X-MS-TrafficTypeDiagnostic: DB8EUR05HT004: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: pQAEtIbEma38He0Z+yckVNArrQKqeJGMWjEPoKkB46LdPMj5cMKEP8B/uISZwXwKj8GhJnKVWu3jLczOBuH8N/PMf6B4bRQwaSkKUl6eC+jn5qSdde4jRGt0G7wclI89NaYGkENDk8prRD2MNoZ3vu1iYwrJlESGQca8g+HpdcIyZUd2ekvszTPFZ3Kac6wRzDLnoLYGVx0NxnCS3AJE5YvNwtDOIGu7RbBeKX35496f2XzuqM0V7yhsHAn9O1h2HSOHm8rg1xvxHyGWw0xeUUcUatuQ0Y5jMbHDTW1ULjfZH+8MQ7Dd04M7TfSnjS2VX6cqj7ER8z4P+RmS9LJrkTbBbn/K/JNaAso2XYlojuhMM/FLc/xUFwPOFgwM3WFVldG64FqnBpysdRKX+IZ2rg== X-MS-Exchange-AntiSpam-MessageData: /BVFEpmZOCKy8fbKkkcl9XXiXHNFfSvSk6Hzh6wz6mr+0c/7GS3QINxzH3qHitGtQRSK756w4OKd8HNKf8o9DbDZKpGhGHuYgJDVvzKuJauQS111yjx21NBdrplE/d1ovzXqtvZgsQntBCGV/aLgjA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: cb6aab27-b9ff-481b-c9ea-08d93055fb68 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jun 2021 23:33:30.0276 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-AuthSource: DB8EUR05FT045.eop-eur05.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8EUR05HT004 Subject: [FFmpeg-devel] [PATCH 21/54] avformat/matroskadec: Simplify cleanup after read_header failure X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: Bk95WziqikyZ by setting the FF_FMT_INIT_CLEANUP flag. Signed-off-by: Andreas Rheinhardt --- libavformat/matroskadec.c | 29 ++++++++++------------------- 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index 356a02339c..10c1641eb7 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -796,8 +796,6 @@ static const CodecMime mkv_mime_tags[] = { static const char *const matroska_doctypes[] = { "matroska", "webm" }; -static int matroska_read_close(AVFormatContext *s); - /* * This function prepares the status for parsing of level 1 elements. */ @@ -2952,11 +2950,11 @@ static int matroska_read_header(AVFormatContext *s) while (res != 1) { res = matroska_resync(matroska, pos); if (res < 0) - goto fail; + return res; pos = avio_tell(matroska->ctx->pb); res = ebml_parse(matroska, matroska_segment, matroska); if (res == AVERROR(EIO)) // EOF is translated to EIO, this exists the loop on EOF - goto fail; + return res; } /* Set data_offset as it might be needed later by seek_frame_generic. */ if (matroska->current_id == MATROSKA_ID_CLUSTER) @@ -2976,7 +2974,7 @@ static int matroska_read_header(AVFormatContext *s) res = matroska_parse_tracks(s); if (res < 0) - goto fail; + return res; attachments = attachments_list->elem; for (j = 0; j < attachments_list->nb_elem; j++) { @@ -3005,7 +3003,7 @@ static int matroska_read_header(AVFormatContext *s) if (st->codecpar->codec_id != AV_CODEC_ID_NONE) { res = ff_add_attached_pic(s, st, NULL, &attachments[j].bin.buf, 0); if (res < 0) - goto fail; + return res; } else { st->codecpar->codec_type = AVMEDIA_TYPE_ATTACHMENT; if (ff_alloc_extradata(st->codecpar, attachments[j].bin.size)) @@ -3040,9 +3038,6 @@ static int matroska_read_header(AVFormatContext *s) matroska_convert_tags(s); return 0; -fail: - matroska_read_close(s); - return res; } /* @@ -4236,16 +4231,13 @@ static int webm_dash_manifest_read_header(AVFormatContext *s) } if (!matroska->tracks.nb_elem || !s->nb_streams) { av_log(s, AV_LOG_ERROR, "No track found\n"); - ret = AVERROR_INVALIDDATA; - goto fail; + return AVERROR_INVALIDDATA; } if (!matroska->is_live) { buf = av_asprintf("%g", matroska->duration); - if (!buf) { - ret = AVERROR(ENOMEM); - goto fail; - } + if (!buf) + return AVERROR(ENOMEM); av_dict_set(&s->streams[0]->metadata, DURATION, buf, AV_DICT_DONT_STRDUP_VAL); @@ -4268,7 +4260,7 @@ static int webm_dash_manifest_read_header(AVFormatContext *s) ret = webm_dash_manifest_cues(s, init_range); if (ret < 0) { av_log(s, AV_LOG_ERROR, "Error parsing Cues\n"); - goto fail; + return ret; } } @@ -4278,9 +4270,6 @@ static int webm_dash_manifest_read_header(AVFormatContext *s) matroska->bandwidth, 0); } return 0; -fail: - matroska_read_close(s); - return ret; } static int webm_dash_manifest_read_packet(AVFormatContext *s, AVPacket *pkt) @@ -4307,6 +4296,7 @@ const AVInputFormat ff_matroska_demuxer = { .long_name = NULL_IF_CONFIG_SMALL("Matroska / WebM"), .extensions = "mkv,mk3d,mka,mks,webm", .priv_data_size = sizeof(MatroskaDemuxContext), + .flags_internal = FF_FMT_INIT_CLEANUP, .read_probe = matroska_probe, .read_header = matroska_read_header, .read_packet = matroska_read_packet, @@ -4319,6 +4309,7 @@ const AVInputFormat ff_webm_dash_manifest_demuxer = { .name = "webm_dash_manifest", .long_name = NULL_IF_CONFIG_SMALL("WebM DASH Manifest"), .priv_data_size = sizeof(MatroskaDemuxContext), + .flags_internal = FF_FMT_INIT_CLEANUP, .read_header = webm_dash_manifest_read_header, .read_packet = webm_dash_manifest_read_packet, .read_close = matroska_read_close,