[{"id":17871,"web_url":"https://patchwork.libcamera.org/comment/17871/","msgid":"<20210628065205.GY2599@pyrite.rasen.tech>","date":"2021-06-28T06:52:05","subject":"Re: [libcamera-devel] [PATCH] android: camera_device: Fix null\n\tpointer dereference","submitter":{"id":17,"url":"https://patchwork.libcamera.org/api/people/17/","name":"Paul Elder","email":"paul.elder@ideasonboard.com"},"content":"Hi Laurent,\n\nOn Mon, Jun 28, 2021 at 09:44:50AM +0300, Laurent Pinchart wrote:\n> Commit 7532caa2c77b (\"android: camera_device: Reset config_ if\n> Camera::configure() fails\") reworked the configuration sequence to\n> ensure that the CameraConfiguration pointers gets reset when\n> configuration fails. This inadvertently causes a null pointer\n> dereference, as the CameraStream constructor accesses the camera\n> configuration through CameraDevice::cameraConfiguration() before the\n> internal config_ pointer is set.\n> \n> Fix this by passing the configuration pointer explicitly to the\n> CameraStream constructor.\n> \n> Fixes: 7532caa2c77b (\"android: camera_device: Reset config_ if Camera::configure() fails\")\n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\nReviewed-by: Paul Elder <paul.elder@ideasonboard.com>\nTested-by: Paul Elder <paul.elder@ideasonboard.com>\n\n> ---\n>  src/android/camera_device.cpp | 4 ++--\n>  src/android/camera_device.h   | 4 ----\n>  src/android/camera_stream.cpp | 6 +++---\n>  src/android/camera_stream.h   | 3 ++-\n>  4 files changed, 7 insertions(+), 10 deletions(-)\n> \n> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\n> index 13ee5fab4412..678cde231c63 100644\n> --- a/src/android/camera_device.cpp\n> +++ b/src/android/camera_device.cpp\n> @@ -682,8 +682,8 @@ int CameraDevice::configureStreams(camera3_stream_configuration_t *stream_list)\n>  \t\tconfig->addConfiguration(streamConfig.config);\n>  \n>  \t\tfor (auto &stream : streamConfig.streams) {\n> -\t\t\tstreams_.emplace_back(this, stream.type, stream.stream,\n> -\t\t\t\t\t      config->size() - 1);\n> +\t\t\tstreams_.emplace_back(this, config.get(), stream.type,\n> +\t\t\t\t\t      stream.stream, config->size() - 1);\n>  \t\t\tstream.stream->priv = static_cast<void *>(&streams_.back());\n>  \t\t}\n>  \t}\n> diff --git a/src/android/camera_device.h b/src/android/camera_device.h\n> index 18cf51189e90..3361918d4484 100644\n> --- a/src/android/camera_device.h\n> +++ b/src/android/camera_device.h\n> @@ -48,10 +48,6 @@ public:\n>  \tunsigned int id() const { return id_; }\n>  \tcamera3_device_t *camera3Device() { return &camera3Device_; }\n>  \tconst std::shared_ptr<libcamera::Camera> &camera() const { return camera_; }\n> -\tlibcamera::CameraConfiguration *cameraConfiguration() const\n> -\t{\n> -\t\treturn config_.get();\n> -\t}\n>  \n>  \tconst std::string &maker() const { return maker_; }\n>  \tconst std::string &model() const { return model_; }\n> diff --git a/src/android/camera_stream.cpp b/src/android/camera_stream.cpp\n> index b2f03b505199..bf4a7b41a70a 100644\n> --- a/src/android/camera_stream.cpp\n> +++ b/src/android/camera_stream.cpp\n> @@ -39,10 +39,10 @@ LOG_DECLARE_CATEGORY(HAL)\n>   * and buffer allocation.\n>   */\n>  \n> -CameraStream::CameraStream(CameraDevice *const cameraDevice, Type type,\n> +CameraStream::CameraStream(CameraDevice *const cameraDevice,\n> +\t\t\t   CameraConfiguration *config, Type type,\n>  \t\t\t   camera3_stream_t *camera3Stream, unsigned int index)\n> -\t: cameraDevice_(cameraDevice),\n> -\t  config_(cameraDevice->cameraConfiguration()), type_(type),\n> +\t: cameraDevice_(cameraDevice), config_(config), type_(type),\n>  \t  camera3Stream_(camera3Stream), index_(index)\n>  {\n>  \tif (type_ == Type::Internal || type_ == Type::Mapped) {\n> diff --git a/src/android/camera_stream.h b/src/android/camera_stream.h\n> index 3401672233ca..8ecc6e345414 100644\n> --- a/src/android/camera_stream.h\n> +++ b/src/android/camera_stream.h\n> @@ -110,7 +110,8 @@ public:\n>  \t\tInternal,\n>  \t\tMapped,\n>  \t};\n> -\tCameraStream(CameraDevice *const cameraDevice, Type type,\n> +\tCameraStream(CameraDevice *const cameraDevice,\n> +\t\t     libcamera::CameraConfiguration *config, Type type,\n>  \t\t     camera3_stream_t *camera3Stream, unsigned int index);\n>  \n>  \tType type() const { return type_; }\n> -- \n> Regards,\n> \n> Laurent Pinchart\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 2C5FBC321E\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 28 Jun 2021 06:52:14 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 56165684D5;\n\tMon, 28 Jun 2021 08:52:13 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 5E4B36028C\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 28 Jun 2021 08:52:12 +0200 (CEST)","from pyrite.rasen.tech (unknown\n\t[IPv6:2400:4051:61:600:2c71:1b79:d06d:5032])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 006DDB8A;\n\tMon, 28 Jun 2021 08:52:10 +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=\"pFFF8Kz1\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1624863132;\n\tbh=K45FLYRmftWR1k1sNiLv8Oh51yEo84UrOGMlAQpSMgw=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=pFFF8Kz1FYJaPuTIYPwFoD0DaX/2Y9dTehSZDoYntDtEkJagzlfDJtmL/NVm2o+B6\n\th9JVsMJiNbnE0/G8FlkotxZBDwOaNh58FzFYidG9r8RJhEsrsNIfkUFecYSKQSvMnP\n\tYeF08/yV0HZdd6EAJkfOawDPTdn9amA03n3nAIXQ=","Date":"Mon, 28 Jun 2021 15:52:05 +0900","From":"paul.elder@ideasonboard.com","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Message-ID":"<20210628065205.GY2599@pyrite.rasen.tech>","References":"<20210628064450.3286-1-laurent.pinchart@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<20210628064450.3286-1-laurent.pinchart@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH] android: camera_device: Fix null\n\tpointer dereference","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":17872,"web_url":"https://patchwork.libcamera.org/comment/17872/","msgid":"<be9c9917-d6cd-8d81-701a-9040f270b814@ideasonboard.com>","date":"2021-06-28T06:53:32","subject":"Re: [libcamera-devel] [PATCH] android: camera_device: Fix null\n\tpointer dereference","submitter":{"id":86,"url":"https://patchwork.libcamera.org/api/people/86/","name":"Umang Jain","email":"umang.jain@ideasonboard.com"},"content":"Hi Laurent,\n\nThanks for the fix!\n\nOn 6/28/21 12:14 PM, Laurent Pinchart wrote:\n> Commit 7532caa2c77b (\"android: camera_device: Reset config_ if\n> Camera::configure() fails\") reworked the configuration sequence to\n> ensure that the CameraConfiguration pointers gets reset when\n> configuration fails. This inadvertently causes a null pointer\n> dereference, as the CameraStream constructor accesses the camera\n> configuration through CameraDevice::cameraConfiguration() before the\n> internal config_ pointer is set.\n>\n> Fix this by passing the configuration pointer explicitly to the\n> CameraStream constructor.\n>\n> Fixes: 7532caa2c77b (\"android: camera_device: Reset config_ if Camera::configure() fails\")\n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\nReviewed-by: Umang Jain <umang.jain@ideasonboard.com>\n\nTested-by: Umang Jain <umang.jain@ideasonboard.com>\n\n> ---\n>   src/android/camera_device.cpp | 4 ++--\n>   src/android/camera_device.h   | 4 ----\n>   src/android/camera_stream.cpp | 6 +++---\n>   src/android/camera_stream.h   | 3 ++-\n>   4 files changed, 7 insertions(+), 10 deletions(-)\n>\n> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\n> index 13ee5fab4412..678cde231c63 100644\n> --- a/src/android/camera_device.cpp\n> +++ b/src/android/camera_device.cpp\n> @@ -682,8 +682,8 @@ int CameraDevice::configureStreams(camera3_stream_configuration_t *stream_list)\n>   \t\tconfig->addConfiguration(streamConfig.config);\n>   \n>   \t\tfor (auto &stream : streamConfig.streams) {\n> -\t\t\tstreams_.emplace_back(this, stream.type, stream.stream,\n> -\t\t\t\t\t      config->size() - 1);\n> +\t\t\tstreams_.emplace_back(this, config.get(), stream.type,\n> +\t\t\t\t\t      stream.stream, config->size() - 1);\n>   \t\t\tstream.stream->priv = static_cast<void *>(&streams_.back());\n>   \t\t}\n>   \t}\n> diff --git a/src/android/camera_device.h b/src/android/camera_device.h\n> index 18cf51189e90..3361918d4484 100644\n> --- a/src/android/camera_device.h\n> +++ b/src/android/camera_device.h\n> @@ -48,10 +48,6 @@ public:\n>   \tunsigned int id() const { return id_; }\n>   \tcamera3_device_t *camera3Device() { return &camera3Device_; }\n>   \tconst std::shared_ptr<libcamera::Camera> &camera() const { return camera_; }\n> -\tlibcamera::CameraConfiguration *cameraConfiguration() const\n> -\t{\n> -\t\treturn config_.get();\n> -\t}\n>   \n>   \tconst std::string &maker() const { return maker_; }\n>   \tconst std::string &model() const { return model_; }\n> diff --git a/src/android/camera_stream.cpp b/src/android/camera_stream.cpp\n> index b2f03b505199..bf4a7b41a70a 100644\n> --- a/src/android/camera_stream.cpp\n> +++ b/src/android/camera_stream.cpp\n> @@ -39,10 +39,10 @@ LOG_DECLARE_CATEGORY(HAL)\n>    * and buffer allocation.\n>    */\n>   \n> -CameraStream::CameraStream(CameraDevice *const cameraDevice, Type type,\n> +CameraStream::CameraStream(CameraDevice *const cameraDevice,\n> +\t\t\t   CameraConfiguration *config, Type type,\n>   \t\t\t   camera3_stream_t *camera3Stream, unsigned int index)\n> -\t: cameraDevice_(cameraDevice),\n> -\t  config_(cameraDevice->cameraConfiguration()), type_(type),\n> +\t: cameraDevice_(cameraDevice), config_(config), type_(type),\n>   \t  camera3Stream_(camera3Stream), index_(index)\n>   {\n>   \tif (type_ == Type::Internal || type_ == Type::Mapped) {\n> diff --git a/src/android/camera_stream.h b/src/android/camera_stream.h\n> index 3401672233ca..8ecc6e345414 100644\n> --- a/src/android/camera_stream.h\n> +++ b/src/android/camera_stream.h\n> @@ -110,7 +110,8 @@ public:\n>   \t\tInternal,\n>   \t\tMapped,\n>   \t};\n> -\tCameraStream(CameraDevice *const cameraDevice, Type type,\n> +\tCameraStream(CameraDevice *const cameraDevice,\n> +\t\t     libcamera::CameraConfiguration *config, Type type,\n>   \t\t     camera3_stream_t *camera3Stream, unsigned int index);\n>   \n>   \tType type() const { return type_; }","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 E0EDAC321E\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 28 Jun 2021 06:53:41 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id A4624684D4;\n\tMon, 28 Jun 2021 08:53:41 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 99B6C60509\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 28 Jun 2021 08:53:40 +0200 (CEST)","from [IPv6:2409:4041:2d81:a1f7:cd6e:3470:7a1e:8c71] (unknown\n\t[IPv6:2409:4041:2d81:a1f7:cd6e:3470:7a1e:8c71])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 7FE9EB8A;\n\tMon, 28 Jun 2021 08:53:38 +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=\"LORKtCXm\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1624863220;\n\tbh=91JCN38QevduA7JjzzZHtdzYjMzKuNnTJmjNff7XG+w=;\n\th=Subject:To:References:From:Date:In-Reply-To:From;\n\tb=LORKtCXm6N3nyZLyO8Ct6nW2CA58WgxYSEmtKZoxikBkDkvY2vBtCSGAn/uFw3YfP\n\t1lLy950AbXS47xbEZrLkrPQCJoBWJ7CZg4v4bCm1aD0pGPK5CBu7ul2gFqke/M253o\n\tDnYCNfc00W0JHuA0JEfwHvqAd2F+F+8fxE9giMZE=","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20210628064450.3286-1-laurent.pinchart@ideasonboard.com>","From":"Umang Jain <umang.jain@ideasonboard.com>","Message-ID":"<be9c9917-d6cd-8d81-701a-9040f270b814@ideasonboard.com>","Date":"Mon, 28 Jun 2021 12:23:32 +0530","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101\n\tThunderbird/78.10.2","MIME-Version":"1.0","In-Reply-To":"<20210628064450.3286-1-laurent.pinchart@ideasonboard.com>","Content-Type":"text/plain; charset=utf-8; format=flowed","Content-Transfer-Encoding":"7bit","Content-Language":"en-US","Subject":"Re: [libcamera-devel] [PATCH] android: camera_device: Fix null\n\tpointer dereference","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>"}},{"id":17874,"web_url":"https://patchwork.libcamera.org/comment/17874/","msgid":"<CAO5uPHNOUNXXX3E4o22fEU5jc5PkS5CFduxkYHL_hb8ZEqo97g@mail.gmail.com>","date":"2021-06-28T07:31:22","subject":"Re: [libcamera-devel] [PATCH] android: camera_device: Fix null\n\tpointer dereference","submitter":{"id":63,"url":"https://patchwork.libcamera.org/api/people/63/","name":"Hirokazu Honda","email":"hiroh@chromium.org"},"content":"Hi Laurent,\n\nOn Mon, Jun 28, 2021 at 3:52 PM <paul.elder@ideasonboard.com> wrote:\n>\n> Hi Laurent,\n>\n> On Mon, Jun 28, 2021 at 09:44:50AM +0300, Laurent Pinchart wrote:\n> > Commit 7532caa2c77b (\"android: camera_device: Reset config_ if\n> > Camera::configure() fails\") reworked the configuration sequence to\n> > ensure that the CameraConfiguration pointers gets reset when\n> > configuration fails. This inadvertently causes a null pointer\n> > dereference, as the CameraStream constructor accesses the camera\n> > configuration through CameraDevice::cameraConfiguration() before the\n> > internal config_ pointer is set.\n> >\n> > Fix this by passing the configuration pointer explicitly to the\n> > CameraStream constructor.\n> >\n> > Fixes: 7532caa2c77b (\"android: camera_device: Reset config_ if Camera::configure() fails\")\n> > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n>\n> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>\n> Tested-by: Paul Elder <paul.elder@ideasonboard.com>\n\nOops, I couldn't catch this in the previous review. :(\nThanks for fixing.\n\nReviewed-by: Hirokazu Honda <hiroh@chromium.org>\n>\n> > ---\n> >  src/android/camera_device.cpp | 4 ++--\n> >  src/android/camera_device.h   | 4 ----\n> >  src/android/camera_stream.cpp | 6 +++---\n> >  src/android/camera_stream.h   | 3 ++-\n> >  4 files changed, 7 insertions(+), 10 deletions(-)\n> >\n> > diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\n> > index 13ee5fab4412..678cde231c63 100644\n> > --- a/src/android/camera_device.cpp\n> > +++ b/src/android/camera_device.cpp\n> > @@ -682,8 +682,8 @@ int CameraDevice::configureStreams(camera3_stream_configuration_t *stream_list)\n> >               config->addConfiguration(streamConfig.config);\n> >\n> >               for (auto &stream : streamConfig.streams) {\n> > -                     streams_.emplace_back(this, stream.type, stream.stream,\n> > -                                           config->size() - 1);\n> > +                     streams_.emplace_back(this, config.get(), stream.type,\n> > +                                           stream.stream, config->size() - 1);\n> >                       stream.stream->priv = static_cast<void *>(&streams_.back());\n> >               }\n> >       }\n> > diff --git a/src/android/camera_device.h b/src/android/camera_device.h\n> > index 18cf51189e90..3361918d4484 100644\n> > --- a/src/android/camera_device.h\n> > +++ b/src/android/camera_device.h\n> > @@ -48,10 +48,6 @@ public:\n> >       unsigned int id() const { return id_; }\n> >       camera3_device_t *camera3Device() { return &camera3Device_; }\n> >       const std::shared_ptr<libcamera::Camera> &camera() const { return camera_; }\n> > -     libcamera::CameraConfiguration *cameraConfiguration() const\n> > -     {\n> > -             return config_.get();\n> > -     }\n> >\n> >       const std::string &maker() const { return maker_; }\n> >       const std::string &model() const { return model_; }\n> > diff --git a/src/android/camera_stream.cpp b/src/android/camera_stream.cpp\n> > index b2f03b505199..bf4a7b41a70a 100644\n> > --- a/src/android/camera_stream.cpp\n> > +++ b/src/android/camera_stream.cpp\n> > @@ -39,10 +39,10 @@ LOG_DECLARE_CATEGORY(HAL)\n> >   * and buffer allocation.\n> >   */\n> >\n> > -CameraStream::CameraStream(CameraDevice *const cameraDevice, Type type,\n> > +CameraStream::CameraStream(CameraDevice *const cameraDevice,\n> > +                        CameraConfiguration *config, Type type,\n> >                          camera3_stream_t *camera3Stream, unsigned int index)\n> > -     : cameraDevice_(cameraDevice),\n> > -       config_(cameraDevice->cameraConfiguration()), type_(type),\n> > +     : cameraDevice_(cameraDevice), config_(config), type_(type),\n> >         camera3Stream_(camera3Stream), index_(index)\n> >  {\n> >       if (type_ == Type::Internal || type_ == Type::Mapped) {\n> > diff --git a/src/android/camera_stream.h b/src/android/camera_stream.h\n> > index 3401672233ca..8ecc6e345414 100644\n> > --- a/src/android/camera_stream.h\n> > +++ b/src/android/camera_stream.h\n> > @@ -110,7 +110,8 @@ public:\n> >               Internal,\n> >               Mapped,\n> >       };\n> > -     CameraStream(CameraDevice *const cameraDevice, Type type,\n> > +     CameraStream(CameraDevice *const cameraDevice,\n> > +                  libcamera::CameraConfiguration *config, Type type,\n> >                    camera3_stream_t *camera3Stream, unsigned int index);\n> >\n> >       Type type() const { return type_; }\n> > --\n> > Regards,\n> >\n> > Laurent Pinchart\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 B42C7C321F\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 28 Jun 2021 07:31:36 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 688FB684D6;\n\tMon, 28 Jun 2021 09:31:35 +0200 (CEST)","from mail-ej1-x62d.google.com (mail-ej1-x62d.google.com\n\t[IPv6:2a00:1450:4864:20::62d])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id DED20684D2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 28 Jun 2021 09:31:33 +0200 (CEST)","by mail-ej1-x62d.google.com with SMTP id hc16so28141192ejc.12\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 28 Jun 2021 00:31:33 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=chromium.org header.i=@chromium.org\n\theader.b=\"UYVDBfiE\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org;\n\ts=google; \n\th=mime-version:references:in-reply-to:from:date:message-id:subject:to\n\t:cc; bh=oLTr73GZ8mhcseoNZWAnQYY5qX/7jMmfJlXRAVfQZh4=;\n\tb=UYVDBfiEP24s6yG/WXWwPqyXsR0czF66xsE5/64KaMlWmhAoAdxZxH0isxa9V41b6T\n\tY7X/B614TUikqN3FLd0qez/H0ZjX4z/7+A/U3lFDveMy0bj/8OxJIqG0l8xhHYx3Q/OX\n\tiRGuG3dQkuCX3ivEKg1SpQcHzM6jh6WKhb1mc=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:references:in-reply-to:from:date\n\t:message-id:subject:to:cc;\n\tbh=oLTr73GZ8mhcseoNZWAnQYY5qX/7jMmfJlXRAVfQZh4=;\n\tb=AbPrhubi8riwsTzbn91H+I3oYE/GhK63OGSWrHfHC5D2TmIw+M0CS37cgjJBZVQHAW\n\tkTJBMFe21qJIkzPOHVjD9E20x106mGUPnqwTeCEfapEBya6AqxT859J6kV9p8QbXxq7d\n\t8IdXxNAEaAB5ZY9QyGKVLRshdsKU0Q3ojVfbnjhippTWmyppw/uqArvFAj+7gpPatcDw\n\tW74zOo+56Mk8QiDBSWHSx3mmhKECgOuIseQIcSPmmVzxarLHKdf7HFH+aLLYUz1kdVxc\n\tfWHDbfsmimbfmZR3DbRumLW4j1nS/s4c7iFCXxUpBiYqkVT+E7yhi34+xvW9Z6TvG8Dz\n\tyVOA==","X-Gm-Message-State":"AOAM533WKQImDgsYTavgX/elOfIFHdB9xRSIsPU/kzlvdZsVj0PDBLnw\n\t0WijN81zEzw3mBq8qgiKc3l4hJz7PrCAV0djFNCO+g5C22lRSA==","X-Google-Smtp-Source":"ABdhPJyXXFoheia3k2YwkSosDyv0ruJ8gGq2NRK6LrHE40IEBDfoafF+XDu0AfgGSRAIjXqgHPv++HG3cku/sL6KZkw=","X-Received":"by 2002:a17:906:19cc:: with SMTP id\n\th12mr22501938ejd.306.1624865493498; \n\tMon, 28 Jun 2021 00:31:33 -0700 (PDT)","MIME-Version":"1.0","References":"<20210628064450.3286-1-laurent.pinchart@ideasonboard.com>\n\t<20210628065205.GY2599@pyrite.rasen.tech>","In-Reply-To":"<20210628065205.GY2599@pyrite.rasen.tech>","From":"Hirokazu Honda <hiroh@chromium.org>","Date":"Mon, 28 Jun 2021 16:31:22 +0900","Message-ID":"<CAO5uPHNOUNXXX3E4o22fEU5jc5PkS5CFduxkYHL_hb8ZEqo97g@mail.gmail.com>","To":"Paul Elder <paul.elder@ideasonboard.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Subject":"Re: [libcamera-devel] [PATCH] android: camera_device: Fix null\n\tpointer dereference","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 <libcamera-devel@lists.libcamera.org>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]