From patchwork Thu Oct 17 08:29:31 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 15794 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 C0612449DB0 for ; Thu, 17 Oct 2019 11:30:00 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A141168A64D; Thu, 17 Oct 2019 11:30:00 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f66.google.com (mail-wm1-f66.google.com [209.85.128.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7233E68A3BB for ; Thu, 17 Oct 2019 11:29:54 +0300 (EEST) Received: by mail-wm1-f66.google.com with SMTP id f22so1554210wmc.2 for ; Thu, 17 Oct 2019 01:29:54 -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:mime-version :content-transfer-encoding; bh=DzrM3+gvpNDUyr6jFpjX2PR1NbicdKbNPM+L3GQGdEw=; b=qmNLT6n1VzQ4JwrJD2Ek4cPfE5TQTAu773NnMcH+dS2L+soF5YFQJDUtMzOYsV37MK o8/RKa/rUIjJhcyYLKaTkMwolFJtqC+jFUlzm30YDZ9k1RYd3cnqvPkl//bDkcn21ouq iOVw5slSUjTJ3b+QS9MZm2mnB1ovZJgARdQyi8D+5S5+BRXE1BH/a/oRRxrXuWr0/Iwp cNVMF16QLi355NO9A7w75+fz+Ga9SZUY7fX4h6wLInu1QDoASCHtSiS+oAe2Hj2PsOEn YJjetKSOXmxENrM706YrEXiXzg44H8zUht/X6UVtAPs32M4Thf0qMnOsKUrsJJpGut9Y j+BA== 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=DzrM3+gvpNDUyr6jFpjX2PR1NbicdKbNPM+L3GQGdEw=; b=blaExaarA3Eg5Fv6zk8w2m9uNIXRXXuU+DSx6Mvgd6l54CCSucdFB6HSI8KuTOdZUZ jxyctAzClpLxdkt7DcC9gSzgso+1KDq/nKHeJ78HhA1t9mcy2rzBC7U65T5AgWlCQtlL KxLbsuSMnVv98uwmBagyobuYeOwQx9V+M93n9lLgUlRh2mAQwQMK0W50khDY/K67FAxc PdMmSHdv3c5M7bmWp0VbCgj1DMqRdr1LtX7GWdFtbcKY7xFQ8g1bOQ9UmCVGILbA11Jn pFUY1wpOLv87wdy8K+Y8dH43IO3Y49KDy68ecBaKHSX13aDWExq5j0XX62gGZZTGJyR2 GMQA== X-Gm-Message-State: APjAAAVdMwqiPF5alaMa0RNKaz7ZFvQ4Ux7G9lQI8+HiaBbUJWhaGTr3 bYQaHO/6YWNU3x7hf1y7T4mfq8Y6 X-Google-Smtp-Source: APXvYqwURBR/7GLuqh/j32zu8oaTWkTQp3KLFm/NvaQbSyaqqQ+lrzoK86AeXIotvw1nBR4+hiMuiQ== X-Received: by 2002:a1c:1ad4:: with SMTP id a203mr1735522wma.166.1571300993429; Thu, 17 Oct 2019 01:29:53 -0700 (PDT) Received: from sblaptop.fritz.box (ipbcc08937.dynamic.kabel-deutschland.de. [188.192.137.55]) by smtp.gmail.com with ESMTPSA id l7sm1369273wrv.77.2019.10.17.01.29.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Oct 2019 01:29:52 -0700 (PDT) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 17 Oct 2019 10:29:31 +0200 Message-Id: <20191017082945.13534-1-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 01/15] h264_mp4toannexb: Remove unnecessary check 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" There can be at most 31 SPS and 255 PPS in the mp4/Matroska extradata. Given that each has a size of at most 2^16-1, the length of the output derived from these parameter sets can never overflow an ordinary 32 bit integer. So use a simple uint32_t instead of uint64_t and replace the unnecessary check with an av_assert1. Signed-off-by: Andreas Rheinhardt --- libavcodec/h264_mp4toannexb_bsf.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/libavcodec/h264_mp4toannexb_bsf.c b/libavcodec/h264_mp4toannexb_bsf.c index fb3f24ea40..bbf124ad04 100644 --- a/libavcodec/h264_mp4toannexb_bsf.c +++ b/libavcodec/h264_mp4toannexb_bsf.c @@ -21,6 +21,7 @@ #include +#include "libavutil/avassert.h" #include "libavutil/intreadwrite.h" #include "libavutil/mem.h" @@ -68,7 +69,7 @@ static int h264_extradata_to_annexb(AVBSFContext *ctx, const int padding) { H264BSFContext *s = ctx->priv_data; uint16_t unit_size; - uint64_t total_size = 0; + uint32_t total_size = 0; uint8_t *out = NULL, unit_nb, sps_done = 0, sps_seen = 0, pps_seen = 0; const uint8_t *extradata = ctx->par_in->extradata + 4; @@ -91,12 +92,7 @@ static int h264_extradata_to_annexb(AVBSFContext *ctx, const int padding) unit_size = AV_RB16(extradata); total_size += unit_size + 4; - if (total_size > INT_MAX - padding) { - av_log(ctx, AV_LOG_ERROR, - "Too big extradata size, corrupted stream or invalid MP4/AVCC bitstream\n"); - av_free(out); - return AVERROR(EINVAL); - } + av_assert1(total_size <= INT_MAX - padding); if (extradata + 2 + unit_size > ctx->par_in->extradata + ctx->par_in->extradata_size) { av_log(ctx, AV_LOG_ERROR, "Packet header is not contained in global extradata, " "corrupted stream or invalid MP4/AVCC bitstream\n");