From patchwork Fri Dec 24 03:09:00 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: rcombs X-Patchwork-Id: 32885 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:cd86:0:0:0:0:0 with SMTP id d128csp7805424iog; Thu, 23 Dec 2021 19:11:15 -0800 (PST) X-Google-Smtp-Source: ABdhPJz6C0oKydFWoX0Gpgifk/x1BR61PVC9cg1sR1R5Oqswulq3anObwkRSknEAm/hukgtPRqBH X-Received: by 2002:a50:950c:: with SMTP id u12mr4367293eda.361.1640315475111; Thu, 23 Dec 2021 19:11:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1640315475; cv=none; d=google.com; s=arc-20160816; b=xDwjGB4XG4GugtzXanV3WUGHBBoXgEQHct1iAxei0RM4rFCMYnbaD+Mzj9UcEuYP8/ z9zIvrbFUCaV1bWFnMfTZXWbw5c6sbh7eqN3/eojjS6+uIP5QZsM4UZeY+sSBtsICGdC jepQLA781uuwbEjTjppvC8xUtWhIJJXDhRmC3mJfmD5TLF+IsxyPar4eUU+MbOoq2t6A g3QzJnx6aOqu4FzE/T7RCJxxyTocue8b/RH+/L/SP2Z9barpNmWbu7AAAOKW7whIjKRm 0btFt5CQz/TopJvHgwTH7kRqYPCl3YW2sXx7It1YXtya88iv6GP9tRopGvvRpI+eY63K ae6Q== 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=IcoMS74Qb6SzjGQkhUWO+bY9d34l4ZR29umJEO5GkNU=; b=ln6TRox2soYj/xJ13Lq2Kuwi+Vl//2LJe157iEkmIgPG7QdI89IMedgPbFEuIbj4a7 WqOB0M6WWW4n/BDGvPcd7tdsDHcaFyVLnvG+8xoZNNQq7393cxWzyAS+lqPj4mZNNyX5 3BZHdxR66JeBpkOjchSEw4vdSW7Eioac9ZuV2fdrnj+QpjJKnfYfzm1nnWPMfvny7uxl 0vb432kBHfx/5kSAe/hR7CQWR8qqqanNEKBpjhgc1hRonG4peIqrWpjtagiyqbki9XO7 S1Xb1sQM6OqagLLbHVxbt/E+ZeUKmSp4V7zts6L1JLDxT+DwCkdXsS5FhkdbyzGK3FAk 8yCQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@rcombs.me header.s=google header.b=ffs+hLp4; 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; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=rcombs.me Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id f2si201846edy.201.2021.12.23.19.11.14; Thu, 23 Dec 2021 19:11:15 -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=@rcombs.me header.s=google header.b=ffs+hLp4; 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; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=rcombs.me Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id AD5CC68B20D; Fri, 24 Dec 2021 05:09:34 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f175.google.com (mail-qk1-f175.google.com [209.85.222.175]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9D8DE68B20C for ; Fri, 24 Dec 2021 05:09:26 +0200 (EET) Received: by mail-qk1-f175.google.com with SMTP id w27so1152800qkj.7 for ; Thu, 23 Dec 2021 19:09:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rcombs.me; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=ExF/TYmU65aQq4B3Q0Euibe3b7iM/duy+t0sGlltyVM=; b=ffs+hLp4OdOTznnjjQW/mG+s5EWVSeDrvnvM1FdS21P2L6y1UQynuazi+23BzfVIEk z+fjqjEet8VebjXI+IP7yHfSrh27gmHCNoAJxkuCSgunRjjP1wVnCsKjV3YzRTQWU4yx yYMsuXfks+OP4iMV17mF0ZZRENSyFbQndsI2r7DlKPVj6W6MpZyjnQttEhvGGikrsOpP S+LBTgYr57JtTknsxKDHiABTMRtJeuRYxcxk2K6HFRMJrpv8jPSpgMi5kk/fA16zedAD gg/D7bGrKyHUYrFu9ZcERswxg4L18Ih+SSUd7I7qXyHCaLhJ4RZszjDloOTRFqTBnZVn oGeA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ExF/TYmU65aQq4B3Q0Euibe3b7iM/duy+t0sGlltyVM=; b=C5XS3I/1kHIrdStwjCqdhsDPb9GC4Um0sx+IwrvRXvJB8/pSSqAmRej84ElBtmUoPr mMVhvEKE7qtomcmcrtY7zo2sNpLmuapZvVJgK3miWIdAcGCHimcsfUjWt7nJOyqNbXYz TLOdAnkvrm+lgOxN0vM+tZvrDhPcwAtnAYEYDNz9+VGVhAl424kutpChazsUq9qxJlCK cannpcuktDE3sNcQqH6owtIaUFq1SYEOGsP8R2aFBtvam1E1+y22YNCI6/EXj4hYBnn9 q2IVcunbw656TRnrghLIffhtaDXbKRUTBGytqiSpa+Kk/92tQgy0J0oYYd1jC5ABy7Dl CEhw== X-Gm-Message-State: AOAM533RAHT71uwmkDVam+B0rz7hfuUypEVGc/vnyVw5qckTw/mWPTS+ 1vkYUKhZ8vEfQnB6g3J6zBodftTBdC7e5ls= X-Received: by 2002:a05:620a:454d:: with SMTP id u13mr3505411qkp.221.1640315365128; Thu, 23 Dec 2021 19:09:25 -0800 (PST) Received: from rcombs-mbp.localdomain ([2601:243:2000:5ac:cd8d:58a:de7b:88f1]) by smtp.gmail.com with ESMTPSA id e15sm5162479qtq.83.2021.12.23.19.09.24 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 23 Dec 2021 19:09:24 -0800 (PST) From: rcombs To: ffmpeg-devel@ffmpeg.org Date: Thu, 23 Dec 2021 21:09:00 -0600 Message-Id: <20211224030904.1196-13-rcombs@rcombs.me> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211224030904.1196-1-rcombs@rcombs.me> References: <20211224030904.1196-1-rcombs@rcombs.me> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 12/16] lavfi/drawutils: ensure we don't allow mixed-byte-depth formats 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: Si5Bf8fSWY4c These could be hazardous because of FFDrawColor's union --- libavfilter/drawutils.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libavfilter/drawutils.c b/libavfilter/drawutils.c index e4d6ddcf4c..99c124822d 100644 --- a/libavfilter/drawutils.c +++ b/libavfilter/drawutils.c @@ -83,6 +83,7 @@ int ff_draw_init(FFDrawContext *draw, enum AVPixelFormat format, unsigned flags) unsigned i, nb_planes = 0; int pixelstep[MAX_PLANES] = { 0 }; int full_range = 0; + int depthb = 0; if (!desc || !desc->name) return AVERROR(EINVAL); @@ -96,6 +97,7 @@ int ff_draw_init(FFDrawContext *draw, enum AVPixelFormat format, unsigned flags) format == AV_PIX_FMT_YUVJ411P || format == AV_PIX_FMT_YUVJ440P) full_range = 1; for (i = 0; i < desc->nb_components; i++) { + int db; c = &desc->comp[i]; /* for now, only 8-16 bits formats */ if (c->depth < 8 || c->depth > 16) @@ -105,6 +107,11 @@ int ff_draw_init(FFDrawContext *draw, enum AVPixelFormat format, unsigned flags) /* data must either be in the high or low bits, never middle */ if (c->shift && ((c->shift + c->depth) & 0x7)) return AVERROR(ENOSYS); + /* mixed >8 and <=8 depth */ + db = (c->depth + 7) / 8; + if (depthb && (depthb != db)) + return AVERROR(ENOSYS); + depthb = db; /* strange interleaving */ if (pixelstep[c->plane] != 0 && pixelstep[c->plane] != c->step)