From patchwork Tue Jun 20 15:05:19 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Armstrong Huang X-Patchwork-Id: 42257 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:be15:b0:121:b37c:e101 with SMTP id ge21csp1458495pzb; Tue, 20 Jun 2023 08:06:34 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4vzyOnCwpw9e860p9qfc78N8Sw8YIXn0XPSlie7QhHU0QDiOBieefeRTB26HEbg1HsiPKF X-Received: by 2002:aa7:d60c:0:b0:505:d16:9374 with SMTP id c12-20020aa7d60c000000b005050d169374mr11841453edr.9.1687273593973; Tue, 20 Jun 2023 08:06:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1687273593; cv=none; d=google.com; s=arc-20160816; b=sF2H8xciUtMEMrrdZ0C+MsYrcUbLbKtfMryUP1byU8RAw5rVQrwT8/9EYHzansxVZi EE8tSBdCUEMb3+5V2+U8U5tXyd/IMiMkkIVfeZvjBDjFH4kInm4MUOBxqlgdsIo6QZpZ 5hcxh95Q1JAJF3aPAeExjavaIBZymUVZasID8+Csdz6fuyp3sEMIJuIb5EcppD2tcKSD 8AINYcvLjp42HWP8hhvIIHnCP9tUanSKg+okpIN3zTYXTxGPC436B8VyaK8oGHsp8m43 DzynZQvmirNkJCcwdHkE8Q902S9g4FDD1Z/XO1g1PtU/y4kYeoZ/kJakrEcRgufQeDoE 6BLA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:delivered-to; bh=z1iVftMwCNDIZM/ODl2mO6jvdjBZsCjf0Js7SQrjHs4=; b=sBWy6Q4h/GsxcvSoT9l0EkL3NcYoKUt4/UfotcqSvSTEiF3dK0VHefR/0DuxyjkYMK D5gi2h03Orvl9rfSBdI4DBSlkdru/T0A7JVggDtUl7mWL1NjikJS/JdngQYfeKqGtLeA aZtL/FkZodrCumNzZ7kn2ljcWYzA2U76jOBGCuc1ehNYthTK5g9Q2VZbzLk4YHjBhzbO dLrO//5uk7JGe6BeMol8nL9lZgTSZFhMPS7jLpSklkXsYxTE/fn+fzE4UYIlfrn5Q9Mx ADvUBfvPANK340OtF58/MdwUT/QLnDwf3YISw1Q9sSfvTJ1lKtTOxQeex6290lVZ/Fzv BunA== 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 w5-20020aa7dcc5000000b0051a4c6234ccsi1238908edu.406.2023.06.20.08.06.16; Tue, 20 Jun 2023 08:06:33 -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 B1AEE68BCB6; Tue, 20 Jun 2023 18:06:12 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-m118207.qiye.163.com (mail-m118207.qiye.163.com [115.236.118.207]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EECFC68BDDE for ; Tue, 20 Jun 2023 18:06:04 +0300 (EEST) Received: from localhost.localdomain (unknown [120.230.119.239]) by mail-m118207.qiye.163.com (HMail) with ESMTPA id E1EFB90072F for ; Tue, 20 Jun 2023 23:05:59 +0800 (CST) From: Armstrong Huang To: ffmpeg-devel@ffmpeg.org Date: Tue, 20 Jun 2023 15:05:19 +0000 Message-Id: <20230620150519.15768-1-armstrong@sweelia.com> X-Mailer: git-send-email 2.9.0.windows.1 In-Reply-To: <30247c6c-5fe6-8131-d4e9-b6388846437d@sweelia.com> References: <30247c6c-5fe6-8131-d4e9-b6388846437d@sweelia.com> X-HM-Spam-Status: e1kfGhgUHx5ZQUtXWQgPGg8OCBgUHx5ZQUlOS1dZFg8aDwILHllBWSg2Ly tZV1koWUFPN1dZLVlBSVdZDwkaFQgSH1lBWRofT0lWTkNKQ0hMTU9JHx9KVQIWExYaEhckFA4PWV dZGBILWUFZSklLVUlIS1VKSkJVSUhCWVdZFhoPEhUdFFlBWUtVS1VLVUtZBg++ X-HM-Tid: 0a88d957579f2d29kusne1efb90072f X-HM-MType: 1 X-HM-Sender-Digest: e1kMHhlZQR0aFwgeV1kSHx4VD1lBWUc6Phg6ORw5ITlLCRwXPQsBTxQM FhMaFA1VSlVKTUNMSUxITk1LTU5KVTMWGhIXVRoJFggPCRQVHDsIDB4eFxIaVRgUFkVZV1kSC1lB WUpJS1VJSEtVSkpCVUlIQllXWQgBWUFJSEpINwY+ 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: GCacSlOb28qi 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 | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c index d83edff727..21ff73a1aa 100644 --- a/libavformat/flvdec.c +++ b/libavformat/flvdec.c @@ -1096,7 +1096,18 @@ 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 meta_pos: %ld\n", + meta_pos); + goto skip; + } } } else { av_log(s, AV_LOG_DEBUG,