From patchwork Fri Jan 3 15:56:34 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Gaullier X-Patchwork-Id: 17178 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 3F55944A938 for ; Fri, 3 Jan 2020 17:56:52 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2E50E68AD1B; Fri, 3 Jan 2020 17:56:52 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from smtp-2.arkena.net (smtp-2.arkena.net [95.81.173.75]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B2E2F68A71A for ; Fri, 3 Jan 2020 17:56:45 +0200 (EET) Received: from secu2 (unknown [10.180.103.10]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp-2.arkena.net (Postfix) with ESMTPSA id 47q8fJ6lyqzHh9X; Fri, 3 Jan 2020 15:56:40 +0000 (UTC) Received: from arkena.com (unknown [172.16.3.159]) by secu2 (Postfix) with ESMTP id B5BBB3FA74; Fri, 3 Jan 2020 16:56:41 +0100 (CET) From: Nicolas Gaullier To: ffmpeg-devel@ffmpeg.org Date: Fri, 3 Jan 2020 16:56:34 +0100 Message-Id: <20200103155636.7476-8-nicolas.gaullier@cji.paris> X-Mailer: git-send-email 2.14.1.windows.1 In-Reply-To: <20200103155636.7476-1-nicolas.gaullier@cji.paris> References: <20200103155636.7476-1-nicolas.gaullier@cji.paris> Subject: [FFmpeg-devel] [PATCH 7/9] avformat/wavdec: Fix s337m last packet parsing X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Nicolas Gaullier MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Fix reading beyond data_end. --- libavformat/wavdec.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libavformat/wavdec.c b/libavformat/wavdec.c index ccb9576b84..039ec1658e 100644 --- a/libavformat/wavdec.c +++ b/libavformat/wavdec.c @@ -643,8 +643,6 @@ static int wav_read_packet(AVFormatContext *s, AVPacket *pkt) if (CONFIG_SPDIF_DEMUXER && wav->spdif == 1) return ff_spdif_read_packet(s, pkt); - if (CONFIG_S337M_DEMUXER && wav->s337m == 1) - return ff_s337m_read_packet(s, pkt); if (wav->smv_data_ofs > 0) { int64_t audio_dts, video_dts; @@ -712,6 +710,10 @@ smv_out: wav->data_end = avio_tell(s->pb) + left; } + if (CONFIG_S337M_DEMUXER && wav->s337m == 1) { + size = FFMIN(S337M_MAX_OFFSET, left); + ret = ff_s337m_get_packet(s->pb, pkt, size, NULL, s, st->codecpar->bits_per_coded_sample); + } else { size = MAX_SIZE; if (st->codecpar->block_align > 1) { if (size < st->codecpar->block_align) @@ -720,6 +722,8 @@ smv_out: } size = FFMIN(size, left); ret = av_get_packet(s->pb, pkt, size); + } + if (ret < 0) return ret; pkt->stream_index = 0;