From patchwork Wed Jun 24 13:47:03 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 20580 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 A92F544B3C4 for ; Wed, 24 Jun 2020 16:53:57 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8CC5768B638; Wed, 24 Jun 2020 16:53:57 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f66.google.com (mail-wr1-f66.google.com [209.85.221.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 417DE68B5CC for ; Wed, 24 Jun 2020 16:53:49 +0300 (EEST) Received: by mail-wr1-f66.google.com with SMTP id o11so2360874wrv.9 for ; Wed, 24 Jun 2020 06:53:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=82D4FpAM1+IIyesbGQ/i5XrU0xXv37dzG1hyS6TcUjE=; b=nAHiC2h+SftMZ/q8VQzJZ+DVuF1n6/vV8TpBtanSgQrjuu2HNDHNQiommskrfbDufC NYMC+HxD1Npi1cD3JD57pRQ1mjqmImcKx0MjgObGPWtPjNe07RR3cJpnRYWdjWuQVrEL Wk6/9fHGbMo1xwuTYGHqcMckZHuH4RgkyI1QNph8/p13vzCkgXaLh+4OG6aL49JQ8a+j EeXsQrh6UROrteHDl9FPN+NsFk31Jzf1yc9R2d4eSK4NKa4ZQlOzjLza9///H0dsTEHv iChWI7XR36tuJCpQPzqNqprXtqdFlGBty+4FjoKEgb5pzIcXbbEPpWSi0BaSGfPmgfZm ZuXg== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=82D4FpAM1+IIyesbGQ/i5XrU0xXv37dzG1hyS6TcUjE=; b=RnkniNoVKBT/xWh6yWODopkt37G6N++JejP+9zpY+UA+9kG1F5qzEhLsXUHcfwQbcY T6H9kIFLKU8DV8+KYoZWkQtfpANkqqAks45kOM4+joOZplCB5xI89D2KvGAyuIPrBOoh Ih03HmMbsOalvGL0T7r3xkIKQ17Uskow84RrAAKO/pdmykso30MFR4dvZh2e1TtlHwWS aPVPh33U+DukHP5L22Qv1LHogeKCxDCrHbYHmxKMgSRWXxD7GU1rHxUB7PIOXZIC0eXA MvanKG8OK3p15yefT/rkUhCsbKkvWgE3IL1n2hTY5DqqDTUwgUMY7sUq/Io9iRTDyKVZ 4vfQ== X-Gm-Message-State: AOAM530vL/ZfGrzyWO7gZ6WXq1vdfFiNSUuOc1ZOa/V6Qkm4fp/bb8rE feAKk4XsWKXIEYb6F1OXVCx1quyM X-Google-Smtp-Source: ABdhPJwSwFA2aBoR98Rib6fIG13zOHzgQSzDG4xcw7GZ15L0zY/muj3a6yIYgLesBjkCz4V80Nwrdg== X-Received: by 2002:adf:8501:: with SMTP id 1mr34148497wrh.153.1593006828359; Wed, 24 Jun 2020 06:53:48 -0700 (PDT) Received: from sblaptop.fritz.box (ipbcc10296.dynamic.kabel-deutschland.de. [188.193.2.150]) by smtp.gmail.com with ESMTPSA id y25sm8172390wma.19.2020.06.24.06.53.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 24 Jun 2020 06:53:47 -0700 (PDT) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 24 Jun 2020 15:47:03 +0200 Message-Id: <20200624134705.14833-7-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200624134705.14833-1-andreas.rheinhardt@gmail.com> References: <20200624134705.14833-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 7/9] avformat/smacker: Don't read only one byte at a time 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" Instead use ffio_read_size to read data into a buffer. Also check that the desired size was actually successfully read and combine the check with the check for reading the extradata. Signed-off-by: Andreas Rheinhardt --- libavformat/smacker.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/libavformat/smacker.c b/libavformat/smacker.c index 2043563fdb..201372aee6 100644 --- a/libavformat/smacker.c +++ b/libavformat/smacker.c @@ -215,15 +215,12 @@ static int smacker_read_header(AVFormatContext *s) for (i = 0; i < smk->frames; i++) { smk->frm_size[i] = avio_rl32(pb); } - for (i = 0; i < smk->frames; i++) { - smk->frm_flags[i] = avio_r8(pb); - } - - /* load trees to extradata, they will be unpacked by decoder */ - ret = avio_read(pb, par->extradata + 16, par->extradata_size - 16); - if (ret != par->extradata_size - 16) { + if ((ret = ffio_read_size(pb, smk->frm_flags, smk->frames)) < 0 || + /* load trees to extradata, they will be unpacked by decoder */ + (ret = ffio_read_size(pb, par->extradata + 16, + par->extradata_size - 16)) < 0) { av_freep(&smk->frm_size); - return AVERROR(EIO); + return ret; } return 0;