From patchwork Wed Sep 21 20:31:48 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Rauch X-Patchwork-Id: 17387 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 3F42BC3272 for ; Wed, 21 Sep 2022 20:31:53 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 413BA621F7; Wed, 21 Sep 2022 22:31:52 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1663792312; bh=aj3ajD/LDm8mwmf5xHowf/c/s3BnrJuClZoHb89cAJA=; h=To:Date:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=v4QXAqC0W7/UVEy6Zo6YP5IY5aZQRAouW+o+pYbCHk8YxP1MaMqGpksKGtzB6raEw ExHXiunyUW8lK9z1ULmktTyC4O1tMeTK0FfviTmtI5KzfKueyLwqp5fyf70w6buxcD tp5WP3RxVhz8Ld0g6MjfOm/OdBhnY3fmBfjxaMwPOEbv6m+I8v8LvS2QhRjPi8guVM rAuBi3ae7suW1T/ZYK61YdROcL3It+MJbgsHwUes1hCrws0vG7v4+PpAIGg1Q2XakM 8V3LXZTYoF9FXQtqXb6f833IVpKkmRI2y51tzZGBJkNeoT8n1g0zVUf+wml4uRmSjB 9UEIndCJIsQsg== Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 45C33600AA for ; Wed, 21 Sep 2022 22:31:51 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=gmx.net header.i=@gmx.net header.b="CtM1V4vR"; dkim-atps=neutral DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1663792310; bh=aj3ajD/LDm8mwmf5xHowf/c/s3BnrJuClZoHb89cAJA=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date; b=CtM1V4vRlKXPjwJ/s3SOL2Vhxmeb3EHAmZzAZ8J7bJuhbrqBp9aUVJsuzydAosQ5h BwY5Rs/oc5Tv/71WJTzO/gNJ52vfsRCN8wJoRB8h0LFjpmb6s8Q6pckGBRinuGKpS6 7kQxyIjpRkGz0QSt6cMjMe46f2F8u5+XsrQL8/bo= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from voyager ([88.152.184.103]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MYvY8-1ooBHC2tdo-00Utom; Wed, 21 Sep 2022 22:31:50 +0200 To: libcamera-devel@lists.libcamera.org Date: Wed, 21 Sep 2022 22:31:48 +0200 Message-Id: <20220921203148.534883-1-Rauch.Christian@gmx.de> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-Provags-ID: V03:K1:3kmT9imW89RWO2Z2oAT130/ZkZuzcVtFbwzy4aFRILoe0hNP0Z+ Gzj6OQ4vwzmk3NIDsInq3/IUIchjW1f2heCbVjRBz+Cb7XWk5h/k8+ykHpG7PYzOUcYrlxI D0qdxRVZXg/vgNEEd7rtkagUPOxpKd4oSnGWdnr83q2F8qqSHUNaK+Nxiu4JVH267wA11Rg 83Hl6nNOe0BcDH9O23IAw== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1; V03:K0:eqVsnEwbNVo=:MFrLXiBxQy1Eyq/uvFLTl9 EufvZR+qTN/yBRaTqqhsr88xyhSnXj4sumgfVypFsiX4bZZrSCoRKNzwD/D1f63s1jlEvVZlq sePOihyW4y8q8IOnT+ZD2B+8kjG+XbuEgQs75As7npnNvJLK35OnQzubyDHOoZtYye7P+ONIr VdZCvGK9h5BXT3ugwhW4RS8CPpA8L0Qajh78SLYEX4eQpA39oFDIqoWiGIT7xVqyQ8BGrForT HXiU/IgrdU6GDtYjUJhlLM10bXJD+Z0aY2vg6YvOddFxEw3AToqxAK932JMtRFAP95sNAts+D SQGQ6A45VP0maNoXVsSuabBlil33XQTvN9+aNdcSsVTgLr+mbRE/NGvnv92BrjY3SGhlN5yCV wRzgbePXkl6EJeju3IwJ6Yjj0+74jGssSgP+13/RnCoWIP0anpXMQg4mSgtf33TU9hheQ43AO V5YnP1NQMfEDNAGTO9VTR+ThElUxDzX36Nbm/hyiuAbNrRdLk8rjsqJ1gAFuQuwOtLr4tma9H p1IwfFg1yISSettA+YLwS2X0Tm9xGRvz8YB6m2oy7j2QfAIaJsAet7BPGbJgHqvd+R0ehzij/ BsML8gdMjTR2nLndbJNuFK0cwgBzS/ztg+C0xj1V0wVrR79H0KH5KwgJdbP9kwRaluLtAN6Yi klPP8jh6ypXm+LkLsbPM6ZPL7OKcZJSCm0tcUzH2uHbZcoUqo7ylx3bEdRebEYxkJdgKiX2k0 r47I0NlLAXvYfq2poSdOm/cyt8GPl9eUIyh0Cbc3THX14OzTiEloN/Ya0HkcF/OBcibdH5lk1 TZCo5Eib9kHeds70ELgq+EuuWPWPEyLPD2Cvyh0Cyj5D2I1Jl+UbH4uy2kMbiAeJAAQVNerQZ eXxblJxVKjE7y3CB6ZawDs+1f7G0PycwbvoKG3KFZWYXGShKrTgOX/R6sjNkaQAX+e3sxnrYw 1iMPJkaJ6s0Aohgw/TA1ST5zpspGQQwTPixw8a+0sc8b4G1IuInHpscDIGkvUUl4WQaUEO0vX idiLlG1TW5Mf+B+n6B9zqtMk9nVkKBjL8vw6XLva1rUtsn31mWkjPyKDPqqDIsiRBtD/4e84h EbUKJrEUe1iZBLuC3Gr2SUTwSeFbPkhShubKzqa9ygR3ooIKwSN38ipMJJPFvHZCcNr/aDngQ wUU0OsQAxpKsMKBFFQD46disBF Subject: [libcamera-devel] [PATCH v2] libcamera: controls: validate all ControlInfo values X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Christian Rauch via libcamera-devel From: Christian Rauch Reply-To: Christian Rauch Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" ControlInfoMap::validate only checks the 'min' type against the ControlId type. Extend this with checks against the 'max' type and the 'def' type, if a default is specified. This forces the min/max bounds to have the same type as the controlled value, but leaves the default optional. Signed-off-by: Christian Rauch Reviewed-by: Kieran Bingham --- src/libcamera/controls.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) -- 2.34.1 diff --git a/src/libcamera/controls.cpp b/src/libcamera/controls.cpp index bc3db4f6..e7251507 100644 --- a/src/libcamera/controls.cpp +++ b/src/libcamera/controls.cpp @@ -701,6 +701,28 @@ bool ControlInfoMap::validate() ? ControlTypeInteger32 : id->type(); const ControlInfo &info = ctrl.second; + if (!(info.min().isArray() == info.max().isArray() && + info.min().numElements() == info.max().numElements())) { + LOG(Controls, Error) + << "Control " << utils::hex(id->id()) + << " range must have the same dimension."; + return false; + } + + if (info.min().type() != info.max().type()) { + LOG(Controls, Error) + << "Control " << utils::hex(id->id()) + << " range types mismatch"; + return false; + } + + if (info.def().type() != ControlTypeNone && (info.min().type() != info.def().type())) { + LOG(Controls, Error) + << "Control " << utils::hex(id->id()) + << " default value and info type mismatch"; + return false; + } + if (info.min().type() != rangeType) { LOG(Controls, Error) << "Control " << utils::hex(id->id())