[{"id":20111,"web_url":"https://patchwork.libcamera.org/comment/20111/","msgid":"<20211011121717.25ptv462qnhr553p@uno.localdomain>","date":"2021-10-11T12:17:17","subject":"Re: [libcamera-devel] [PATCH 2/2] android: Check if Stream\n\tconfigurations were generated correctly","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Javier,\n\nOn Fri, Oct 01, 2021 at 06:11:00PM +0200, Javier Martinez Canillas wrote:\n> The libcamera Android Camera HAL generates camera configurations for the\n> StillCapture, Raw and ViewFinder stream roles. But it's only checked for\n> the first one if the function succeeded.\n>\n> This could lead to a NULL pointer deference if a pipeline handler failed\n> to generate a default configuration for one the other two stream roles.\n>\n> Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>\n\nReviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n\nThanks\n   j\n\n> ---\n>\n>  src/android/camera_capabilities.cpp | 13 ++++++++++++-\n>  1 file changed, 12 insertions(+), 1 deletion(-)\n>\n> diff --git a/src/android/camera_capabilities.cpp b/src/android/camera_capabilities.cpp\n> index 87a6e1c6f26..baeedc11500 100644\n> --- a/src/android/camera_capabilities.cpp\n> +++ b/src/android/camera_capabilities.cpp\n> @@ -408,6 +408,11 @@ CameraCapabilities::initializeYUVResolutions(const PixelFormat &pixelFormat,\n>  \tstd::vector<Size> supportedResolutions;\n>  \tstd::unique_ptr<CameraConfiguration> cameraConfig =\n>  \t\tcamera_->generateConfiguration({ StreamRole::Viewfinder });\n> +\tif (!cameraConfig) {\n> +\t\tLOG(HAL, Error) << \"Failed to get supported YUV resolutions\";\n> +\t\treturn supportedResolutions;\n> +\t}\n> +\n>  \tStreamConfiguration &cfg = cameraConfig->at(0);\n>\n>  \tfor (const Size &res : resolutions) {\n> @@ -431,11 +436,17 @@ CameraCapabilities::initializeYUVResolutions(const PixelFormat &pixelFormat,\n>  std::vector<Size>\n>  CameraCapabilities::initializeRawResolutions(const PixelFormat &pixelFormat)\n>  {\n> +\tstd::vector<Size> supportedResolutions;\n>  \tstd::unique_ptr<CameraConfiguration> cameraConfig =\n>  \t\tcamera_->generateConfiguration({ StreamRole::Raw });\n> +\tif (!cameraConfig) {\n> +\t\tLOG(HAL, Error) << \"Failed to get supported Raw resolutions\";\n> +\t\treturn supportedResolutions;\n> +\t}\n> +\n>  \tStreamConfiguration &cfg = cameraConfig->at(0);\n>  \tconst StreamFormats &formats = cfg.formats();\n> -\tstd::vector<Size> supportedResolutions = formats.sizes(pixelFormat);\n> +\tsupportedResolutions = formats.sizes(pixelFormat);\n>\n>  \treturn supportedResolutions;\n>  }\n> --\n> 2.31.1\n>","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 E2833BDC71\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 11 Oct 2021 12:16:34 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 8A01768F4C;\n\tMon, 11 Oct 2021 14:16:34 +0200 (CEST)","from relay7-d.mail.gandi.net (relay7-d.mail.gandi.net\n\t[217.70.183.200])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 3993E6012B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 11 Oct 2021 14:16:30 +0200 (CEST)","(Authenticated sender: jacopo@jmondi.org)\n\tby relay7-d.mail.gandi.net (Postfix) with ESMTPSA id 868D52000A;\n\tMon, 11 Oct 2021 12:16:28 +0000 (UTC)"],"Date":"Mon, 11 Oct 2021 14:17:17 +0200","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Javier Martinez Canillas <javierm@redhat.com>","Message-ID":"<20211011121717.25ptv462qnhr553p@uno.localdomain>","References":"<20211001161100.1405576-1-javierm@redhat.com>\n\t<20211001161100.1405576-2-javierm@redhat.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20211001161100.1405576-2-javierm@redhat.com>","Subject":"Re: [libcamera-devel] [PATCH 2/2] android: Check if Stream\n\tconfigurations were generated correctly","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>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":20124,"web_url":"https://patchwork.libcamera.org/comment/20124/","msgid":"<YWT1fuE+mosBK7Bv@pendragon.ideasonboard.com>","date":"2021-10-12T02:39:58","subject":"Re: [libcamera-devel] [PATCH 2/2] android: Check if Stream\n\tconfigurations were generated correctly","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Javier,\n\nThank you for the patch.\n\nOn Fri, Oct 01, 2021 at 06:11:00PM +0200, Javier Martinez Canillas wrote:\n> The libcamera Android Camera HAL generates camera configurations for the\n> StillCapture, Raw and ViewFinder stream roles. But it's only checked for\n> the first one if the function succeeded.\n> \n> This could lead to a NULL pointer deference if a pipeline handler failed\n\ns/deference/dereference/\n\nI'll fix this when applying.\n\n> to generate a default configuration for one the other two stream roles.\n> \n> Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> ---\n> \n>  src/android/camera_capabilities.cpp | 13 ++++++++++++-\n>  1 file changed, 12 insertions(+), 1 deletion(-)\n> \n> diff --git a/src/android/camera_capabilities.cpp b/src/android/camera_capabilities.cpp\n> index 87a6e1c6f26..baeedc11500 100644\n> --- a/src/android/camera_capabilities.cpp\n> +++ b/src/android/camera_capabilities.cpp\n> @@ -408,6 +408,11 @@ CameraCapabilities::initializeYUVResolutions(const PixelFormat &pixelFormat,\n>  \tstd::vector<Size> supportedResolutions;\n>  \tstd::unique_ptr<CameraConfiguration> cameraConfig =\n>  \t\tcamera_->generateConfiguration({ StreamRole::Viewfinder });\n> +\tif (!cameraConfig) {\n> +\t\tLOG(HAL, Error) << \"Failed to get supported YUV resolutions\";\n> +\t\treturn supportedResolutions;\n> +\t}\n> +\n>  \tStreamConfiguration &cfg = cameraConfig->at(0);\n>  \n>  \tfor (const Size &res : resolutions) {\n> @@ -431,11 +436,17 @@ CameraCapabilities::initializeYUVResolutions(const PixelFormat &pixelFormat,\n>  std::vector<Size>\n>  CameraCapabilities::initializeRawResolutions(const PixelFormat &pixelFormat)\n>  {\n> +\tstd::vector<Size> supportedResolutions;\n>  \tstd::unique_ptr<CameraConfiguration> cameraConfig =\n>  \t\tcamera_->generateConfiguration({ StreamRole::Raw });\n> +\tif (!cameraConfig) {\n> +\t\tLOG(HAL, Error) << \"Failed to get supported Raw resolutions\";\n> +\t\treturn supportedResolutions;\n> +\t}\n> +\n>  \tStreamConfiguration &cfg = cameraConfig->at(0);\n>  \tconst StreamFormats &formats = cfg.formats();\n> -\tstd::vector<Size> supportedResolutions = formats.sizes(pixelFormat);\n> +\tsupportedResolutions = formats.sizes(pixelFormat);\n>  \n>  \treturn supportedResolutions;\n>  }","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 E18CEC323E\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 12 Oct 2021 02:40:14 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id A693368F4C;\n\tTue, 12 Oct 2021 04:40:14 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id C5B336023A\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 12 Oct 2021 04:40:12 +0200 (CEST)","from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi\n\t[62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 66092F1;\n\tTue, 12 Oct 2021 04:40:12 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"hMfL9ORz\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1634006412;\n\tbh=2jo0kapeu8JlFfQxEtrlY1jkG/OZslAJ0prLtEVsXzo=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=hMfL9ORzrSfDbM/7bnQEJ125sMyldb/yJnSNl2eloAlLty40xed1hJE5LCsrzwh2S\n\tz3f8LYOSlJlfLzEZSb9jKmwtAtqbfhpDU4Lipmy5uc3k2r7mBAdW/MKI1VzS97d1bS\n\tJJrD0xBj3FF8t0thNNIs3T8hp0QPzTibVRCkMX5A=","Date":"Tue, 12 Oct 2021 05:39:58 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Javier Martinez Canillas <javierm@redhat.com>","Message-ID":"<YWT1fuE+mosBK7Bv@pendragon.ideasonboard.com>","References":"<20211001161100.1405576-1-javierm@redhat.com>\n\t<20211001161100.1405576-2-javierm@redhat.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20211001161100.1405576-2-javierm@redhat.com>","Subject":"Re: [libcamera-devel] [PATCH 2/2] android: Check if Stream\n\tconfigurations were generated correctly","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>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]