From patchwork Mon Feb 10 17:21:37 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 17747 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 CE81344A391 for ; Mon, 10 Feb 2020 19:21:53 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A599068AC21; Mon, 10 Feb 2020 19:21:53 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f68.google.com (mail-wr1-f68.google.com [209.85.221.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id CB3CC68A540 for ; Mon, 10 Feb 2020 19:21:46 +0200 (EET) Received: by mail-wr1-f68.google.com with SMTP id y11so8789180wrt.6 for ; Mon, 10 Feb 2020 09:21:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=jiO9ZCkzEEl9YpjPAY5OPye3W7KfR/6cIU24ivUwgow=; b=K/5Y1240ORBiW2bGb3fd04y7pxrl4RfOpUT0cE5hOEyrH/W0xkmdgWNtIZheCwROK7 IGRbXkLSd4/Zz5PARiuI+Wg2N6oZ+GX98MznVjm4IkBOg+TdLy0dL4YBZtA/KGiRqiZi 7cmUxzqMcangKphn6GuGOQWGNfIRg8RgKgFXYq+QUHQ5o9QeUqyhqmOJGNc1Y+1IQvnb XC69Tdqkipq6oWd92mJpO+KkmwtFB/citj3XpXixKE3m3/SU+5mKc63O2NjZ7NL++NrJ b7Y5wHiuOPlbSaWFZfUxvNE69iUCPnJTgTwjXqZ2hhTPDdD0puuewoj3xi9fpT+2ZvgN CHFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=jiO9ZCkzEEl9YpjPAY5OPye3W7KfR/6cIU24ivUwgow=; b=IqdZF9Di48zc2gUTVlHQsQibwnfLGoJ4zQn7snsfTVV+NCKjE44Ide9iA6BenmGLz8 7uc5CmomW7tkVgQ0dYozRN0cdkIXasBKNeKHFS4MjsyjMmEq45AwvtQXXhf3dZiOM5aw s4U7Q0/O1Ew5ylKTK7cTnfZmw3ypzx5cjwTytF74oGCElR8xCCyENaMobDrHjd/hOtVJ iB4Qoz3K+EkV3aYO069/ab9xPrOnj0atrmsRXXVyycgQFMcE0WWEZBnIjaP3MVILg28y AvZmfKT5xnc5qYd0aNN2QGAN10JFvYyXUd6KCfjQc0CAr+dszmA79FNlMW9WTW7nNI5g kF2A== X-Gm-Message-State: APjAAAVUAMU6kbxpw5DxlhQg9PzQagNl9POvpS1d9qhe3YewrklQh8om LUtN7vilHvK5cLtNUPCpNZHuRuGM X-Google-Smtp-Source: APXvYqx1Np9wpMLHAq9zAg8LBYiTWMPMWkKiAyXYpQ9KQcS9ahrRUvARsBxUDvwmNz7OLUs1Igz2hA== X-Received: by 2002:adf:f44a:: with SMTP id f10mr3214968wrp.16.1581355305940; Mon, 10 Feb 2020 09:21:45 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1ab4b.dynamic.kabel-deutschland.de. [188.193.171.75]) by smtp.gmail.com with ESMTPSA id a9sm33301wmm.15.2020.02.10.09.21.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Feb 2020 09:21:45 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 10 Feb 2020 18:21:37 +0100 Message-Id: <20200210172138.15596-1-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/2] avformat/wtvdec: Forward errors when reading packet 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" wtvfile_read_packet did not abide by the requirements of an AVIOContext's read_packet-function: If it did not read anything, it returned zero, which currently leads to a warning in read_packet_wrapper in aviobuf.c. Said warning will be an av_assert2 as soon as FF_API_OLD_AVIO_EOF_0 is zero (probably the next major version bump). So instead forward the error code from the underlying protocol. This error/assert is triggered in the wtv-demux FATE test. Signed-off-by: Andreas Rheinhardt --- This patch supersedes [1]. The difference to the previous version is that I have changed the return value from "nread ? nread : n ? : AVERROR_EOF" to "nread ? nread : n". This can only make a difference if buf_size (the size of the data to be read) is zero and I now think that this should simply not happen: It would be possible by calling avio_read_partial with a desired size of 0 and if the AVIOContext's write_flag is set, but avio_read_partial is not called with one of wtvdec's custom AVIOContexts (not to mention that if this were a problem, it should probably be fixed in avio_read_partial). [1]: https://patchwork.ffmpeg.org/project/ffmpeg/patch/20190821090438.10260-4-andreas.rheinhardt@gmail.com/ libavformat/wtvdec.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/libavformat/wtvdec.c b/libavformat/wtvdec.c index 67d934f074..83f510b92f 100644 --- a/libavformat/wtvdec.c +++ b/libavformat/wtvdec.c @@ -71,7 +71,7 @@ static int wtvfile_read_packet(void *opaque, uint8_t *buf, int buf_size) { WtvFile *wf = opaque; AVIOContext *pb = wf->pb_filesystem; - int nread = 0; + int nread = 0, n = 0; if (wf->error || pb->error) return -1; @@ -80,7 +80,6 @@ static int wtvfile_read_packet(void *opaque, uint8_t *buf, int buf_size) buf_size = FFMIN(buf_size, wf->length - wf->position); while(nread < buf_size) { - int n; int remaining_in_sector = (1 << wf->sector_bits) - (wf->position & ((1 << wf->sector_bits) - 1)); int read_request = FFMIN(buf_size - nread, remaining_in_sector); @@ -100,7 +99,7 @@ static int wtvfile_read_packet(void *opaque, uint8_t *buf, int buf_size) } } } - return nread; + return nread ? nread : n; } /**