From patchwork Mon Jul 27 16:32:22 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mark Thompson X-Patchwork-Id: 21317 Delivered-To: andriy.gelman@gmail.com Received: by 2002:a25:80ca:0:0:0:0:0 with SMTP id c10csp4278255ybm; Mon, 27 Jul 2020 09:34:45 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwTDDwsj2RqqIMsNO58vBluJwj5YHf54LVc/mhpalBBueCXT+mVh6Q9nhoh5Vbcw7OYwHYi X-Received: by 2002:a1c:5451:: with SMTP id p17mr134496wmi.180.1595867684916; Mon, 27 Jul 2020 09:34:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1595867684; cv=none; d=google.com; s=arc-20160816; b=aLoO4FitQ5dW0JbZ5u1iKKiC2y121qX1wgIZRBuO7qIx04hgGfHNkimhYxSjlm1ZhV zYYzOvxn8RXv9n2085P5u1ULtQwa2XCMvtWhHOzqGmjjc8j/Jg0ykq5uFSfwTPw1Dlmz TweiGiL5trqd01aJbvJjCeSAJyNTcd/nZwG7Z1C5TqferDH19cyrZMDGSFWExjDLfwbW 4Dgvv4vgILmYewuUWoa/+L7ixouWjoOhfkfZmgEprKvwmhULbDCvtsZ/93gXDT4jpRgE a8tUvoJtClPBb1DgPCdLF64I4Wa4w7TsYL2byuVTJFrk3HfCGPYmxVMi1LrRtMChPdAA OxVA== 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:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=2tQSbmD0wNCE1Tz4jxNNIqxxRhINoVP0Lp/xzJYS1Zc=; b=beldYgPyxo2m+oTxyazQB0yq5U0dY7nTCFf351bEiEBt37oLu3Ky7hN1/1EEDb8zPm B3pdxfz9448DsHFBijdZcWlbvAiZLxzscgiLTYzGA+6Nswd8g2mHIflUbwJbunuPS4oZ /5/eKJt0x7BEhCDZiSq26S77eBHswOW3hyxUvZsA6oF1pe0ua47aicVPJzOYryWJIrMq W7w8yEiH3OpmTRaLSgUuzdm6CPTREKKSNWSgaBO6c8DnvkrAx7MyNEqqGLm6x0k5wi8c eqcQNu08rQp5S436q67P8n6yjZFPFFUwkVcxAke1iRzJnxxa/Q6O3bcEyakOOj3SF139 4aiA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@jkqxz-net.20150623.gappssmtp.com header.s=20150623 header.b=v7bvLI+Z; 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 h13si99025wmb.87.2020.07.27.09.34.44; Mon, 27 Jul 2020 09:34:44 -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; dkim=neutral (body hash did not verify) header.i=@jkqxz-net.20150623.gappssmtp.com header.s=20150623 header.b=v7bvLI+Z; 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 E8D5B68B93F; Mon, 27 Jul 2020 19:33:03 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f68.google.com (mail-wm1-f68.google.com [209.85.128.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2E94068B8C3 for ; Mon, 27 Jul 2020 19:32:51 +0300 (EEST) Received: by mail-wm1-f68.google.com with SMTP id 3so8470189wmi.1 for ; Mon, 27 Jul 2020 09:32:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jkqxz-net.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=7nRWEJMAoUmKsE1pxDHaYWVcugsu+Q3qR3ggn/FOgvw=; b=v7bvLI+Zr8tnsb5Cr7l1LcMpS+PO65Nrr8MXsOYHNa0pRh7Db4eiBt9DxpSUw1MMW0 CIpGdQytwFUXjpt/fJJX+UAGVS+pJgsy8Am9bmCoyDcpRGaA3u2o/5NqkFXcQ9HcbI5e UARClIx/JLQz1gvRnmaKRxVaWRbAvwh08XWrEB1/J6TYSiIXhy1POV7dkDYKBBLyFcQC qo1+dGisUI2jBdv3X8pbvYXcXAN22XUu+MxyLbPwHS9TPFV+c3PUa0aPo/wBcudf+P2M zJ5PbP+c1ChY/41sbylC7IGhL6rq5YIgg3f80yX5MaPhKQ3+InQBSfQ65mOQHua1rKFK SxLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=7nRWEJMAoUmKsE1pxDHaYWVcugsu+Q3qR3ggn/FOgvw=; b=Th3/ITD1iU3U6AcGMy11Y23WfE9hmIxeMwybXOC0JIoUIMH/jmgKwr6Bg1E7qV5aLp ZAIsKxCWSpi6pevwCjusQmyR81++Y52e0imT9sw8W/M8X3CUGIWjBpxyEDYpV8bJvLTM 8cIo/nDT4uwoc7fst3cj+5oSkwlPNQW1HNfV70B0tWtSyjBmTqCmjxPCSuOJ4U/MLZzo MCC8966LyQuyM0dHvmVQuTWXQGuXHULRgUhrqvQhqRZkj+QP4qLE0uGCB+xV8LPK94ml NxvfupI5M/Xsp5GttlDReuUAoMe9D7mpZ3ZW0iBzUdI2ONxMlud9/fm2G5QhmmmTxwwy J3pA== X-Gm-Message-State: AOAM533cgAqNkr8IzYVGKYWnDVqguHBvUwrdWf/cX1HpMGa/1u5ja8HW vaqC1sYVGySaSRY5J3a3HYi98dSSbE4= X-Received: by 2002:a1c:26c4:: with SMTP id m187mr132177wmm.90.1595867570151; Mon, 27 Jul 2020 09:32:50 -0700 (PDT) Received: from rywe.jkqxz.net (cpc91242-cmbg18-2-0-cust650.5-4.cable.virginm.net. [82.8.130.139]) by smtp.gmail.com with ESMTPSA id w16sm14706791wrg.95.2020.07.27.09.32.49 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 Jul 2020 09:32:49 -0700 (PDT) From: Mark Thompson To: ffmpeg-devel@ffmpeg.org Date: Mon, 27 Jul 2020 17:32:22 +0100 Message-Id: <20200727163237.23371-8-sw@jkqxz.net> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200727163237.23371-1-sw@jkqxz.net> References: <20200727163237.23371-1-sw@jkqxz.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v6 07/22] cbs_h2645: Ensure that non-refcounted parameter sets are fully copied 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: NvzdumTcn/p9 Content-Length: 2456 Only copying the main structure is not necessarily sufficient - there could be references to substructures. --- libavcodec/cbs_h2645.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/libavcodec/cbs_h2645.c b/libavcodec/cbs_h2645.c index 5725539e60..e19fa5249d 100644 --- a/libavcodec/cbs_h2645.c +++ b/libavcodec/cbs_h2645.c @@ -720,18 +720,20 @@ static int cbs_h26 ## h26n ## _replace_ ## ps_var(CodedBitstreamContext *ctx, \ CodedBitstreamH26 ## h26n ## Context *priv = ctx->priv_data; \ H26 ## h26n ## Raw ## ps_name *ps_var = unit->content; \ unsigned int id = ps_var->id_element; \ + int err; \ if (id >= FF_ARRAY_ELEMS(priv->ps_var)) { \ av_log(ctx->log_ctx, AV_LOG_ERROR, "Invalid " #ps_name \ " id : %d.\n", id); \ return AVERROR_INVALIDDATA; \ } \ + err = ff_cbs_make_unit_refcounted(ctx, unit); \ + if (err < 0) \ + return err; \ if (priv->ps_var[id] == priv->active_ ## ps_var) \ priv->active_ ## ps_var = NULL ; \ av_buffer_unref(&priv->ps_var ## _ref[id]); \ - if (unit->content_ref) \ - priv->ps_var ## _ref[id] = av_buffer_ref(unit->content_ref); \ - else \ - priv->ps_var ## _ref[id] = av_buffer_alloc(sizeof(*ps_var)); \ + av_assert0(unit->content_ref); \ + priv->ps_var ## _ref[id] = av_buffer_ref(unit->content_ref); \ if (!priv->ps_var ## _ref[id]) \ return AVERROR(ENOMEM); \ priv->ps_var[id] = (H26 ## h26n ## Raw ## ps_name *)priv->ps_var ## _ref[id]->data; \