From patchwork Mon Jun 19 16:00:57 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Armstrong Huang X-Patchwork-Id: 42229 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:be15:b0:121:b37c:e101 with SMTP id ge21csp791935pzb; Mon, 19 Jun 2023 09:01:46 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5WfSrGV+Pzz4VsacrYWpy0SAM711jMm/S6KKGuCRWlGynMG+IloMa4NsF3ItdHLc1Wqajk X-Received: by 2002:a17:907:742:b0:982:83b1:4f3 with SMTP id xc2-20020a170907074200b0098283b104f3mr8462165ejb.47.1687190506643; Mon, 19 Jun 2023 09:01:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1687190506; cv=none; d=google.com; s=arc-20160816; b=bzOyDHdHnkuAEVCCfmhgqgMe9qh+X2X3aOA9pr6Tvg0M01TT41EN8KeXF874xnMROK Kgd0X4l9ACNUE9XhKQ4F9E9ni9WB7gaHDSc80SDxvA+1irSrJ7YFIYX8XRf37gx4v+Q8 iLU4CgsWLM19JA7/2zXbmVEAjX3PNCIxDnSCdZmKHN+ZtoWf3vefjOg8oxl8OEmkbIih o/ptjxw7JRHSqyrWryP0sAE9RzwE1ESWrhZAQDqoCYX31jI456xgAa8Vi9aB53hcDrGs FKrv/rrXGg4704C2TZYd4u5+Zd6NX76+0canU25mRfAJby36ugPTpAZSzUpEOzL8ftAp nzRw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:content-language:to:from:user-agent:mime-version :date:message-id:delivered-to; bh=Sv0tB4F3u8rSfCkPrNr36oz5kdHSKezReK6a+17PPRM=; b=h/vUZaowCjWdpfa1aevO/8aws5oJIXjcLAXWGiswLrvT0EGvan/g2JDLqC0r4FAxz8 GwmCI5Eb6OwlIBDOxJsNrRfADzr0Y9UAAIFRJTp2znxHkKbSe1xDG1f62NhAM1ZokAIb qtlPwSwPDDlh7JQQOTtT+CyRCqvCTtYFcQDrYYFXRd3+mTnBBqyxU4CRVZzYBOGeQiJS ZYpMRzv8xYVW+6KXUWMYzcECB9ZnyKAcnRqu347QgNBeS70byp5cNdPstwyAZLnRe9tP o296Q4yeEelYWpiOfVMNVSqRhM6xPFLeNLI69QJLSXD9wEx5pvWNbQegOXGolvScny1o 8T9Q== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id jj27-20020a170907985b00b00988459ee0dfsi2087598ejc.211.2023.06.19.09.01.19; Mon, 19 Jun 2023 09:01:46 -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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1114D68C028; Mon, 19 Jun 2023 19:01:16 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-m118206.qiye.163.com (mail-m118206.qiye.163.com [115.236.118.206]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9F7FB68BF4B for ; Mon, 19 Jun 2023 19:01:09 +0300 (EEST) Received: from [192.168.20.218] (unknown [120.230.119.239]) by mail-m118206.qiye.163.com (HMail) with ESMTPA id D25C7BE0FDD for ; Tue, 20 Jun 2023 00:01:02 +0800 (CST) Message-ID: <30247c6c-5fe6-8131-d4e9-b6388846437d@sweelia.com> Date: Tue, 20 Jun 2023 00:00:57 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 From: Armstrong Huang To: ffmpeg-devel@ffmpeg.org Content-Language: en-US X-HM-Spam-Status: e1kfGhgUHx5ZQUtXWQgPGg8OCBgUHx5ZQUlOS1dZFg8aDwILHllBWSg2Ly tZV1koWUFPN1dZLVlBSVdZDwkaFQgSH1lBWRpPSRlWSx9LGEofSktMGk9DVQIWExYaEhckFA4PWV dZGBILWUFZSklLVUlIS1VKSkJVSUhCWVdZFhoPEhUdFFlBWUtVS1VLVUtZBg++ X-HM-Tid: 0a88d46361b32d28kusnd25c7be0fdd X-HM-MType: 1 X-HM-Sender-Digest: e1kMHhlZQR0aFwgeV1kSHx4VD1lBWUc6PBw6TQw*MzlKShw2AU0iQi0o PUswCRdVSlVKTUNMSkJLT01ITkpJVTMWGhIXVRoJFggPCRQVHDsIDB4eFxIaVRgUFkVZV1kSC1lB WUpJS1VJSEtVSkpCVUlIQllXWQgBWUFJSUJCNwY+ Subject: [FFmpeg-devel] [PATCH] flvdec: Check the avio_seek return value after reading a metadata packet 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: /3NsUx6rrP+2 In most cases, flv_read_metabody reads pass the beginning of the meta_pos. if the beginning of the meta_pos had been flushed from the IO buffer, we would not be able to seek to the right position (for a nonseekable stream). Is better to check the seek result and skip the current flv body if necessary, than to silently try to read from a desynchronized stream that will only be interpreted as garbage. Signed-off-by: Armstrong Huang --- libavformat/flvdec.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) av_log(s, AV_LOG_DEBUG, diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c index d83edff727..9d2b0730f1 100644 --- a/libavformat/flvdec.c +++ b/libavformat/flvdec.c @@ -1096,7 +1096,14 @@ retry: } else if (type == TYPE_UNKNOWN) { stream_type = FLV_STREAM_TYPE_DATA; } - avio_seek(s->pb, meta_pos, SEEK_SET); + if (avio_seek(s->pb, meta_pos, SEEK_SET) != meta_pos) { + // This can happen after flv_read_metabody + // above, on a non-seekable input, and the + // preceding data has been flushed out from + // the IO buffer. + av_log(s, AV_LOG_ERROR, "Unable to seek back to the flv tag body\n"); + goto skip; + } } } else {