From patchwork Mon Feb 5 15:18:02 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Plowman X-Patchwork-Id: 46044 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:7b08:b0:19e:8a94:b663 with SMTP id s8csp816590pzh; Mon, 5 Feb 2024 07:18:25 -0800 (PST) X-Google-Smtp-Source: AGHT+IHmACMejp3dB+GLbWkuclegKklT8ZIOgvRyqAqNCMvBPgA8Vh/MPLzKUE2XbqQBnoXVMNK/ X-Received: by 2002:aa7:d347:0:b0:55f:fc07:baea with SMTP id m7-20020aa7d347000000b0055ffc07baeamr4779192edr.4.1707146305125; Mon, 05 Feb 2024 07:18:25 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCXVtTYgEEUdZn03I/YM7dsZUesx60dXAnEymGdMNh15CiaJBuJMIaZSd0/OS9KvHbW8l/H13u8H9/AgT9vPYG8Qb4y9gXx9xhvWweHiwKWEFsoiEihcXTco4mvQXj0qC0MMeRFdRlbYVXSGIs4wUAX2GeeUu6GGE4HWSARszEC1mBXOHCLdQw+Ze+AlsS8b0TxK6ztVemcCIad54vOG5hPYH18aI4c+AkGU7dUL+/sA8wqV3v9WOnTOJGKY9otj/cxn7D4/VJW1qisPM+MJF975uf3Un9jJn1NrcRn5F5dWmiGA5cNnxw5TCC6h8zetwKRMVlzMvihxXiXAKj0v4C4J61BQPn5zhhj/m6rFRJ1smRSdoGxf6XvIXFhF7p2NE/DQlFFqcD/jN5jZKLDIl3fj2XUB1lbf1jSBnKZSZAHD9eGHd5N/pBXF3SP8Iv9jHhsSPJYZiZsEezDp4wXW3U2ggnaonAkzgDyHxJCsZT+kiT3Fm6A1gb8oJnzLTyj5VC/jBgaQEHzFm2IGY3jq4sO4QS8cFDeBCQHpqf6xarD4IaynQYd9YssGAV7VaFgSBA6Ufl++ULoK+dyvYMXa5iQJ+OZwoyZtkNJmaGZgssYYL62+WYbzv2QqRdoTn2gW0qkYoH6FqYhfTtbJcHBK3ksHw1UDGMHAiAL1dqicyCGqF/5H72K5A7Z6ttLPY67KvsOBszEEyWeosy20lw3eEHv+TwwsQaSgYW+MiRAxOS+g5TpP7Jz65DkKIPXJz9RwguF9f+l5gc7qEcsuoLyzhvm4AvKGH8X0EflBJvFBhEWdloxnEtVw7oEil/UeABFpHJ+RsYtmLUEKJqgHd8Z+FvwWxexXhR2rYdhURBJBH/cwRO6dAD3Li89wKIpuyXBsotvhlRiQcIXAkDThO34/vq8TyJcx98f1GmEmMzS7msOw5OxD9iVyRDA2wyqDiQShpyAEBd AbGaRbwQrGnn/jSoQhHOmyrWJHNiJBpy2A/rtLHyy3QlPIdGqA7Ws9H1jpSSlNRdxte3tH1MH7rfBu58zhvfA/NmkqBOGb5ZNxajZs2qu+SqUQiz77IOWuqu7MN51e8+ZKLvboDIXJk3cZ0x88XsPXhAa4YNG7CAc2SCAzSWQY4gDTwSlyo0D12STzdtFvmJfkjRcJKyAZn2qWA1fUHMRuRo7O7ybcwwNyOhUr+KAkafI6GZ5JIjEFFn8MeR7het9dERWUt10jk9rR/8ppR+f1yDF0k/mL3jRamLc6nAf0Wscbvim+dSn7vI9z+8lDdVd3pmBwZYh93u821KHVDL7+LQHiozSfysMaDB0FKt+Pujc0Q8Nj8EciTifX2O4MTUAL3j/NuGAoXpdDXeAJf7hIiPql98MK0vfb9mCaOE9QlHmcYeHkSTOVSR8puODZvVbOLoG9R2WFI8ZAmfCRrUitPsnhdxXkyyDnE5keYCbju9P5047uvPp4GKCPKC5Km5RRDipdS+FR51V9yGf04yXJQAnhJFDLauPMv+erPxZWoRBmi2KjNrJFkSA3GPhuof8jUSOPwmihIxUyRaLxKBgsjmSD4SUECs7FkUK/brmk8dwq+U9BVMU80AzAdKI= Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id l21-20020a50d6d5000000b005601c0f1922si2905931edj.519.2024.02.05.07.18.24; Mon, 05 Feb 2024 07:18:25 -0800 (PST) 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=@frankplowman.com header.s=zmail header.b=CGkjGb3D; arc=fail (body hash mismatch); 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 D691268D145; Mon, 5 Feb 2024 17:18:21 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from sender21-mail.zoho.eu (sender11-op-o12.zoho.eu [31.186.226.226]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A5B3068C9F8 for ; Mon, 5 Feb 2024 17:18:14 +0200 (EET) Delivered-To: post@frankplowman.com ARC-Seal: i=1; a=rsa-sha256; t=1707146293; cv=none; d=zohomail.eu; s=zohoarc; b=FPQg4yFAH/U9OUH3lQ65WKxAEr2VejbO3UO9N0HyLd7C7XsfmOGKAo3TUV+EUC5aatWwxvrZxs/WbE+8RO3AY+p8rJ+QnicLXiUdhYtIxStNgWrXuplDkFe8o+jlOAmjoJ4sdoHl2SyTVdKBOEuIXmVIdfLYqv1/iLOIFB+mR5w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.eu; s=zohoarc; t=1707146293; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:MIME-Version:Message-ID:Subject:Subject:To:To:Message-Id:Reply-To; bh=rpWh7NATKyx2cQyDtpEnGrt6djUauTG5+iTuJK3iHpE=; b=k0no1RZx7K3jltdYLRfYuo6U4aFf+WeZVHk3GfST7xr+g/+ZkME/v8z3I65cOQcHYx7Iu2Id5uksLtgho2tKTOnHhqYYW7qbQy2HHM/8g4tyJ8HWvdMaoylYowWdfWZmihdV53lZS2muZqHQwKoTSCsr5YcubgxTWfGROuIPmNg= ARC-Authentication-Results: i=1; mx.zohomail.eu; dkim=pass header.i=frankplowman.com; spf=pass smtp.mailfrom=post@frankplowman.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1707146293; s=zmail; d=frankplowman.com; i=post@frankplowman.com; h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-ID:MIME-Version:Content-Transfer-Encoding:Message-Id:Reply-To; bh=rpWh7NATKyx2cQyDtpEnGrt6djUauTG5+iTuJK3iHpE=; b=CGkjGb3Dc2Dyff9RBt+x2PJwXGn0ttShBhE+bUV3ILkt71Y0NB/jSjCfKscIz9Yu c7KqyAAL68LeuFcCK3xIm74N+0/PGsLCAJWeVwxoVdu/FhoQCy24UM2oNI7PrEe+gPf jt1qsQMjoSsEvffuL5d4hMtH9qYPJ3J55TJOCyVI= Received: from localhost.localdomain (frankplowman.com [51.89.148.29]) by mx.zoho.eu with SMTPS id 1707146290708659.039244128112; Mon, 5 Feb 2024 16:18:10 +0100 (CET) From: post@frankplowman.com To: ffmpeg-devel@ffmpeg.org Date: Mon, 5 Feb 2024 15:18:02 +0000 Message-ID: <20240205151802.85193-1-post@frankplowman.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 X-ZohoMailClient: External Subject: [FFmpeg-devel] [PATCH v2] lavc/vvc: Validate alf_list indexes 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 Cc: Frank Plowman Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: yBZG09KGE715 From: Frank Plowman Signed-off-by: Frank Plowman --- libavcodec/vvc/vvc_ps.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/libavcodec/vvc/vvc_ps.c b/libavcodec/vvc/vvc_ps.c index 4ef8f9f9b9..9c4a74fc9c 100644 --- a/libavcodec/vvc/vvc_ps.c +++ b/libavcodec/vvc/vvc_ps.c @@ -1005,6 +1005,39 @@ int ff_vvc_decode_aps(VVCParamSets *ps, const CodedBitstreamUnit *unit) return ret; } +static int sh_alf_aps(VVCSH *sh, const VVCFrameParamSets *fps) +{ + if (!sh->r->sh_alf_enabled_flag) + return 0; + + for (int i = 0; i < sh->r->sh_num_alf_aps_ids_luma; i++) { + const VVCALF * alf_aps_luma = fps->alf_list[sh->r->sh_alf_aps_id_luma[i]]; + if (!alf_aps_luma) + return AVERROR_INVALIDDATA; + } + + if (sh->r->sh_alf_cb_enabled_flag || sh->r->sh_alf_cr_enabled_flag) { + const VVCALF* alf_aps_chroma = fps->alf_list[sh->r->sh_alf_aps_id_chroma]; + if (!alf_aps_chroma) + return AVERROR_INVALIDDATA; + } + + if (fps->sps->r->sps_ccalf_enabled_flag) { + if (sh->r->sh_alf_cc_cb_enabled_flag) { + const VVCALF *alf_aps_cc_cr = fps->alf_list[sh->r->sh_alf_cc_cb_aps_id]; + if (!alf_aps_cc_cr) + return AVERROR_INVALIDDATA; + } + if (sh->r->sh_alf_cc_cr_enabled_flag) { + const VVCALF *alf_aps_cc_cr = fps->alf_list[sh->r->sh_alf_cc_cr_aps_id]; + if (!alf_aps_cc_cr) + return AVERROR_INVALIDDATA; + } + } + + return 0; +} + static void sh_slice_address(VVCSH *sh, const H266RawSPS *sps, const VVCPPS *pps) { const int slice_address = sh->r->sh_slice_address; @@ -1123,8 +1156,12 @@ static int sh_derive(VVCSH *sh, const VVCFrameParamSets *fps) const H266RawSPS *sps = fps->sps->r; const H266RawPPS *pps = fps->pps->r; const H266RawPictureHeader *ph = fps->ph.r; + int ret; sh_slice_address(sh, sps, fps->pps); + ret = sh_alf_aps(sh, fps); + if (ret < 0) + return ret; sh_inter(sh, sps, pps); sh_qp_y(sh, pps, ph); sh_deblock_offsets(sh);