{"id":22376,"url":"https://patchwork.libcamera.org/api/patches/22376/?format=json","web_url":"https://patchwork.libcamera.org/patch/22376/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20241217140238.215572-2-antoine.bouyer@nxp.com>","date":"2024-12-17T14:02:39","name":"[v2,1/1] apps: cam: kms_sink: Verify colorSpace presence before dereference","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"268de37bf7f4cfb6d42376d7341fd505a626a875","submitter":{"id":218,"url":"https://patchwork.libcamera.org/api/people/218/?format=json","name":"Antoine Bouyer","email":"antoine.bouyer@nxp.com"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/22376/mbox/","series":[{"id":4902,"url":"https://patchwork.libcamera.org/api/series/4902/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=4902","date":"2024-12-17T14:02:38","name":"Verify colorSpace presence during kms_sink configuration","version":2,"mbox":"https://patchwork.libcamera.org/series/4902/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/22376/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/22376/checks/","tags":{},"headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 332FCC32F6\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 17 Dec 2024 14:02:41 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id B595067FD4;\n\tTue, 17 Dec 2024 15:02:40 +0100 (CET)","from EUR02-VI1-obe.outbound.protection.outlook.com\n\t(mail-vi1eur02on2061d.outbound.protection.outlook.com\n\t[IPv6:2a01:111:f403:2607::61d])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id BEAE267FCC\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 17 Dec 2024 15:02:39 +0100 (CET)","from GVXPR04MB9831.eurprd04.prod.outlook.com (2603:10a6:150:11c::8)\n\tby AS5PR04MB10000.eurprd04.prod.outlook.com (2603:10a6:20b:682::19)\n\twith Microsoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8251.21;\n\tTue, 17 Dec 2024 14:02:38 +0000","from GVXPR04MB9831.eurprd04.prod.outlook.com\n\t([fe80::4634:3d9c:c4a:641a]) by\n\tGVXPR04MB9831.eurprd04.prod.outlook.com\n\t([fe80::4634:3d9c:c4a:641a%7]) with mapi id 15.20.8251.015;\n\tTue, 17 Dec 2024 14:02:38 +0000"],"Authentication-Results":["lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=nxp.com header.i=@nxp.com header.b=\"GmLh1/V0\";\n\tdkim-atps=neutral","dkim=none (message not signed)\n\theader.d=none;dmarc=none action=none header.from=nxp.com;"],"ARC-Seal":"i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n\tb=BmTZRykEvInWkTynRrPnKeLVLca6bmdKEzld9AnfmepCQifLt/F8WONZXjdcei32u4SIMMCFq+V7RerjpD2lRUW8sBtOrg122QCdNSl/fTR1aiUZNPwM0IOmbI4rbkp5xkY1Th0akIqLH3YNKGSdDozN6ADnY+J6ITujK75N6o2vROr9LWfQ1pa6hwDfPP8ZxpU47w3NrPlf8byzAIkqLWA4qOzIUVgRqfz2PmQ8TRKlp3GjY0P53ewHShR29jEDdWHthieKlHwkC8k9DZAzV0MLKZbcKrMhyACCWVCSM+gJZAiJwjXv7bFSs/74ZjfDzWFqxMIlsaiMDnwsqoIx4A==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n\ts=arcselector10001;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n\tbh=ndGrfVW1GzeIgC6zeR5a/3HMr59iR2Lxk3QTbZ7TFdI=;\n\tb=FYUja69HiXIb++ekqpi38HGXgzlyjyrinebUmewDlJx5P2lT6coTfeJPPhz7MQE0+seGklgox8L+LTTnVYqL980cnWuPwjUCCeTgXZvbsgG5K04oT9g842iALZcm5/PVGf7s3HeC6ILkTomUqer3x73OWNsQqKNVykgwGQ4qEWSsWXz5hn/WIXyO6COKlth8KeeqY7HaWOgpMHzV+HdJLQdyOdFhNREu7XHA9ZjMhvcEBSZFKBwqI5qVf7MomBCAO5kJedSZOy4hVmEvYXI+dA+MLhR/1SZWnsYnCEA2hEW+gN4AlvzBEBq+wjp9C6Yv+zbRwClUSGF9rJPBKpLZdA==","ARC-Authentication-Results":"i=1; mx.microsoft.com 1; spf=pass\n\tsmtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com;\n\tdkim=pass header.d=nxp.com; arc=none","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n\tbh=ndGrfVW1GzeIgC6zeR5a/3HMr59iR2Lxk3QTbZ7TFdI=;\n\tb=GmLh1/V0scw1xHeN7IsKJqt+V6vxoUfaipKtn8I7g7UMmLNzhfz+sh0BHn7eXPyBJVFOR8BL23JxhcNaYWqCnFn9MzMDJ5UANbaH6lwarAFRxgbHZuMTSGBxkOMycagX29+n3NsvQVoyE++VBxn8hO9bzdk5FZ8pB7aW5DroPWO1F3aBwN8Z1b8Sp41s/EPR815cDC4mHbx89HfaHqLWq3GRXyVDwUL96Y5mDpyx3dAjhR1ZwAVME7mRgALw+axveNAAY3pyqwiKobSCXHLFW2XZgIjUdPPP+7F58ViDOE3l/ZzRNRfBTH/Jo1oY8def0S0NIO1TpF1kgPH5RbybhQ==","From":"Antoine Bouyer <antoine.bouyer@nxp.com>","To":"libcamera-devel@lists.libcamera.org","Cc":"julien.vuillaumier@nxp.com, Antoine Bouyer <antoine.bouyer@nxp.com>,\n\tKieran Bingham <kieran.bingham@ideasonboard.com>","Subject":"[PATCH v2 1/1] apps: cam: kms_sink: Verify colorSpace presence\n\tbefore dereference","Date":"Tue, 17 Dec 2024 15:02:39 +0100","Message-Id":"<20241217140238.215572-2-antoine.bouyer@nxp.com>","X-Mailer":"git-send-email 2.34.1","In-Reply-To":"<20241217140238.215572-1-antoine.bouyer@nxp.com>","References":"<20241217140238.215572-1-antoine.bouyer@nxp.com>","Content-Transfer-Encoding":"8bit","Content-Type":"text/plain","X-ClientProxiedBy":"SA9PR13CA0153.namprd13.prod.outlook.com\n\t(2603:10b6:806:28::8) To GVXPR04MB9831.eurprd04.prod.outlook.com\n\t(2603:10a6:150:11c::8)","MIME-Version":"1.0","X-MS-PublicTrafficType":"Email","X-MS-TrafficTypeDiagnostic":"GVXPR04MB9831:EE_|AS5PR04MB10000:EE_","X-MS-Office365-Filtering-Correlation-Id":"6cb2d157-db49-4a61-5f45-08dd1ea376e4","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam":"BCL:0;\n\tARA:13230040|376014|1800799024|52116014|366016|38350700014; ","X-Microsoft-Antispam-Message-Info":"zsUfRm61FZAxwY7L+S4Ku61tzY9cbV6Vku4JSHteXbLN9u793BemCpwwijtL6HWTYIDIfL4HpBemnD9IY+saCd9OFYUVcF+ycixBfiEGUlpCav8l+a5zCMP9QH3Hb8XN9Zqqpn53HhIOLcrIzrXt08wUQngZrySz98GPLGP1WDZhRt6ZeBw6wzJ/9EVfieBtPtKCwv/KCld928yT1EDZ7yu3x+uEUMr0jbK+LkDcvKKfwzF0TA3S/YZD5mfoBWiOIaXar9yuo8tkJYgD+whREM0ysrGkXz4uM8cHnGvFj/MHaCflcEZeBkk2dN5/hBuyZgFDQSMlTX9lD/gWk2PjHGZWWxz2brgC2ypb8kKi/FT4+KLQW+dDBZ8socNMLCBh5OdrZUcgJd0Gu4vQr6UgDyd90yTNLP+NFn9DEX+9prilTr2Dmy3vdGESkQ/mIkaNGf+Dum1kDlUVC5zgQ8U5PeIcA/51D0w4no/exkf7ZR3HFusmhU4BOhx+7ffoTncYmikgLWpjK4tSksirWJvPlrFC7/xHx8FjPNhOgf5aDt1A2eC8QtQ4rryUoxrpoRS0o++Y5uiUaQyTfofqvLo53y/4eQG8tOuqBHflmCL3q7UVO9j0dozCeRKtfpkHBjwtg0mwGwGskKONUWdoYVvH6SVnj6FV7f8GLYY03zlqoJIs4muv4LYPbcxJ5EsGQ5ORmcF4Yg/AhRCDxMNpmylYpVKN9g2wSLTrhxFdaaI9RtABDajJ0RDqCh9TIeh4yjQ8mehSfDXV0ox0B7PqDXDuhMazwjdDl3CqSTbX49zdWY4W5x+0slA2irrbjKmSOR9Vg5lTOd3WTfCeMZJc1Wzlxh4W3Ohig19WI4N4LjmgwokM3+peiaz83eNRb7Msd2N21gwZMWoCk/8zwcVPO0IQ0buagDojHL3LGHdGwwKRS803pbrgz8mwRsttkWUdeurlFQ31iGTzM7P7nE3SvjHOqkf8b8OlxxVenenXRCz4QxrMfzphhe/khy437zsG0rPYQEmDxJNgeBrBN5bRi5uyN6HFNBoNhznc8uADFcz8K2LDAJJz3uErlpQ63VRKbirPiEHnisGJgV+krJrGOwitmG54dZ67Zk0cEWNvb9ZTDKfKV0sdWPZUmtB+/L4Cq40VH/RjBnnN0kYI3m10lNS1biyw6kGhDI9jnFdUbTLRadY9FESdxCFm3owhiPm4gxpgwKdx7YEUNOZJ0+svf4koayckNQnFC8qy3w9j1hWalYbfvqqsnNzdtYDcRqgrxN37vTIFzb/C/0/HP4hTwgX/S0wlctaqYOn7b/IYo0eoFqqh/u9arfEwUa3FaxPd3navjFi+Rj+GNufG6LczAxecoh0HJotDDc7jWwPyN5XQzH+hB4xLGs3YTZncCC8QQ1T5UNwLX7BUIokR72qMBjHlng==","X-Forefront-Antispam-Report":"CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n\tIPV:NLI; SFV:NSPM; H:GVXPR04MB9831.eurprd04.prod.outlook.com; PTR:;\n\tCAT:NONE; \n\tSFS:(13230040)(376014)(1800799024)(52116014)(366016)(38350700014);\n\tDIR:OUT; SFP:1101; ","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"+Ajnzmd6TmzrkBRA0IMviLJR8yqJhHgPl5x1WBjfpYO49wQldlSXHd73sx9w+F4yHR66zNXFFJhpwgN+RNZmrFDOe3+VHTd4zQUkR+3eAb2bqimKqV9EcS9e5bMPGHbWu5LAou8JUJ3PW7aTVyytaTx/GA01QJwwha/Mbd28cyWqhygq3gLeym3dAapICe078aF31kkhZPt82+UbKkPgq/UwWPMc6l/CuQINuSfNMApKjscUlOSTB+i/Cs3YS9RM0lfwnGUaV+NlKS8e3zzgGt6m4CnFqtridyxRMaUOw8uHz9AtL7+NTB/dRyi/VshlBgVG++raFnQv42YHNu82Lxd/WYKP0ldrZZ1G6boa44h2j8xKbhvHkUUy29J+P/PCctMEpVDRmlTWWlv54bAJG2CvMGHyryfM9vuY11ddGVWKMoFaMkEmaYzPQDFGhrDSkVfc9Qk3zWs9QuBZFHPWZ6lAmfnjl9QKjaF18hWjlUY6voatihoC04npLmoALYjRiLNGnh0UY9/XULAgWSQNxBkrV/dw4Y4acKN5iBYqIdcBGYPXE+hS8Knh4J1KdzHtjuaPafmpQPjb343tlItR0SfzZx0iXBbvXDdOvHVWkgBQgyk0XjfJktF4w8K39ph2eTly5hDbiCWClOPGyqxdQThLcQWetpPvLPZsKM37+gg3hmhjkswq78Qq6SeFI2ILpRTqZfR9Fc1JW+gJmDPI9kAAZC4RmFiExQoRnzJAz/EpvoUPlpopjXYdh27HgCZUCaU6csH3AxT6ZQVH2yFcOJgivlnLgi9cWaQCa8gkghAWNNqu5O/OF1f0utLYKoT9r3zB5QDWeq3aWXwKfw16hpMHMVItlmbKW9ijeebyvAgez8Fl3xoIRVPJYCZigu1TWfBoxdD+hkFVMs5pkmLrdeEM2frJz8zb77rxbboj069gGEK4d3a6cfh26G7waP1xTZdoZ/bcXY59D1LiZE/qeCuMUWTyh0XkpjaOPDJEoLBXnQZwAcOH9raQ0N2vm2dJHD8WdyOTjt7K1frvscdVfxxxt1VbZA4A6X+K9zeaKgnNYWyAy6ed8svipS38euKNtFq4zDPPgdrLfnaAPnMnmGT1UtYNKbr61LZD2IV+Qr7cn3+9KkAdg7YpPxWayENnBhcpotTE3MVcJNFwL3rXBRwuFUFPpDhUcz37dJ/y3VqBLKpU3BLvWauL77PSaLWclxMiH4h/XXk+QHzXzYGeNvGgcjhs1jbWjZRMCdUK4DI81aChUzBHyuyRlCSOz/aDN4XLDkf0yQy5jCSUKJpm5WkFK9hhHssyB+iRerYqhspnuDMMXggEJZmBz0dXEgnI/w0EEqjTSlmz9aatmxF2Lj942CphPsOLq0+IlgMOnuPVJDO/oAT2mfv4V9nwKYByol5rqg9vArciPQRZyiGUuV8ypYRV27F+1npRwFGKlmDFnIFVBIrhHj3mbvzcjo/TfxT00W45Zn7JomuTyCydxUkN4PvOKoBux6kHw9D1dUAX0D0lylJ4scyuS3k0pBFAI4FhNx+exusfjmFBoxvsyHjxhuSHjcM0fakR7RfUeodO/fozhbenBLRzKiCoGsi8IoVN5YGimdPaDwDK2iD4zA==","X-OriginatorOrg":"nxp.com","X-MS-Exchange-CrossTenant-Network-Message-Id":"6cb2d157-db49-4a61-5f45-08dd1ea376e4","X-MS-Exchange-CrossTenant-AuthSource":"GVXPR04MB9831.eurprd04.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"17 Dec 2024 14:02:38.2653\n\t(UTC)","X-MS-Exchange-CrossTenant-FromEntityHeader":"Hosted","X-MS-Exchange-CrossTenant-Id":"686ea1d3-bc2b-4c6f-a92c-d99c5c301635","X-MS-Exchange-CrossTenant-MailboxType":"HOSTED","X-MS-Exchange-CrossTenant-UserPrincipalName":"zo0bJNNcLZktlVRWkWEzL1kO7kUKle944KX9ty/hny/rKTIDXOVsGnI17zP3n0PRpxJ8YmhX1FOO86Zf0xdFnw==","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"AS5PR04MB10000","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"},"content":"During configuration stage, kms_sink doesn't check optional colorSpace\nparameter is valid while dereferencing it. Then it leads to a crash\nwith below signature if parameter is not defined:\n\n  /opt/fsl-imx-internal-xwayland/6.12-styhead/sysroots/armv8a-poky-linux/usr/include/c++/14.2.0/optional:48\n  2: constexpr const _Tp& std::_Optional_base_impl<_Tp, _Dp>::_M_get() const [with _Tp = libcamera::ColorSp\n  ace; _Dp = std::_Optional_base<libcamera::ColorSpace, true, true>]: Assertion 'this->_M_is_engaged()' fai\n  led.\n  Aborted (core dumped)\n\nThis behavior is confirmed in the \"operator->\" page:\n (https://en.cppreference.com/w/cpp/utility/optional/operator*)\n\n\"This operator does not check whether the optional contains a value!\"\n\nThis crash is observed with styhead's gcc compiler (version 14.2.0),\nwhile it was not with previous scarthgap's gcc compiler (version 13.2.0).\n\nUse has_value() as a fix to make sure this property exists and prevent\ncrash.\n\nFixes: 6d7ddace5278 (\"cam: Add KMS sink class\")\nSigned-off-by: Antoine Bouyer <antoine.bouyer@nxp.com>\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n---\n src/apps/cam/kms_sink.cpp | 3 ++-\n 1 file changed, 2 insertions(+), 1 deletion(-)","diff":"diff --git a/src/apps/cam/kms_sink.cpp b/src/apps/cam/kms_sink.cpp\nindex 672c985..8f3b867 100644\n--- a/src/apps/cam/kms_sink.cpp\n+++ b/src/apps/cam/kms_sink.cpp\n@@ -153,7 +153,8 @@ int KMSSink::configure(const libcamera::CameraConfiguration &config)\n \tcolorEncoding_ = std::nullopt;\n \tcolorRange_ = std::nullopt;\n \n-\tif (cfg.colorSpace->ycbcrEncoding == libcamera::ColorSpace::YcbcrEncoding::None)\n+\tif (!cfg.colorSpace.has_value() ||\n+\t    cfg.colorSpace->ycbcrEncoding == libcamera::ColorSpace::YcbcrEncoding::None)\n \t\treturn 0;\n \n \t/*\n","prefixes":["v2","1/1"]}