[{"id":36564,"web_url":"https://patchwork.libcamera.org/comment/36564/","msgid":"<c686e5d5-903b-4aac-9bd1-89c37e30f87f@ideasonboard.com>","date":"2025-10-31T09:04:13","subject":"Re: [PATCH v2 1/2] test: utils: Validate hex sign extension","submitter":{"id":216,"url":"https://patchwork.libcamera.org/api/people/216/","name":"Barnabás Pőcze","email":"barnabas.pocze@ideasonboard.com"},"content":"2025. 10. 30. 19:11 keltezéssel, Kieran Bingham írta:\n> Converting strings to hex stores data in a uint64_t. This can\n> incorrectly sign extend if the type being converted is signed.\n> \n> Provide tests to be sure that the signed conversion is correct.\n> \n> This is known to fail, so report as expected failure.\n> \n> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> ---\n\nLooks good.\n\nReviewed-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n\n\n>   test/meson.build |  2 +-\n>   test/utils.cpp   | 17 +++++++++++++++++\n>   2 files changed, 18 insertions(+), 1 deletion(-)\n> \n> diff --git a/test/meson.build b/test/meson.build\n> index 52f04364e4fc..96c4477f04b2 100644\n> --- a/test/meson.build\n> +++ b/test/meson.build\n> @@ -73,7 +73,7 @@ internal_tests = [\n>       {'name': 'timer-fail', 'sources': ['timer-fail.cpp'], 'should_fail': true},\n>       {'name': 'timer-thread', 'sources': ['timer-thread.cpp']},\n>       {'name': 'unique-fd', 'sources': ['unique-fd.cpp']},\n> -    {'name': 'utils', 'sources': ['utils.cpp']},\n> +    {'name': 'utils', 'sources': ['utils.cpp'], 'should_fail': true},\n>       {'name': 'vector', 'sources': ['vector.cpp']},\n>       {'name': 'yaml-parser', 'sources': ['yaml-parser.cpp']},\n>   ]\n> diff --git a/test/utils.cpp b/test/utils.cpp\n> index ca2e4f3b3e85..b5ce94e5e912 100644\n> --- a/test/utils.cpp\n> +++ b/test/utils.cpp\n> @@ -218,6 +218,23 @@ protected:\n>   \t\tos << utils::hex(static_cast<uint64_t>(0x42), 1) << \" \";\n>   \t\tref += \"0x42 \";\n>   \n> +\t\tos << utils::hex(static_cast<int8_t>(-1)) << \" \";\n> +\t\tref += \"0xff \";\n> +\t\tos << utils::hex(static_cast<uint8_t>(-1)) << \" \";\n> +\t\tref += \"0xff \";\n> +\t\tos << utils::hex(static_cast<int16_t>(-1)) << \" \";\n> +\t\tref += \"0xffff \";\n> +\t\tos << utils::hex(static_cast<uint16_t>(-1)) << \" \";\n> +\t\tref += \"0xffff \";\n> +\t\tos << utils::hex(static_cast<int32_t>(-1)) << \" \";\n> +\t\tref += \"0xffffffff \";\n> +\t\tos << utils::hex(static_cast<uint32_t>(-1)) << \" \";\n> +\t\tref += \"0xffffffff \";\n> +\t\tos << utils::hex(static_cast<int64_t>(-1)) << \" \";\n> +\t\tref += \"0xffffffffffffffff \";\n> +\t\tos << utils::hex(static_cast<uint64_t>(-1)) << \" \";\n> +\t\tref += \"0xffffffffffffffff \";\n> +\n>   \t\tstd::string s = os.str();\n>   \t\tif (s != ref) {\n>   \t\t\tcerr << \"utils::hex() test failed, expected '\" << ref","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 76CAEBE080\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 31 Oct 2025 09:04:20 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 0986760921;\n\tFri, 31 Oct 2025 10:04:19 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 5D540606E6\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 31 Oct 2025 10:04:17 +0100 (CET)","from [192.168.33.30] (185.221.140.239.nat.pool.zt.hu\n\t[185.221.140.239])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 725FB1118;\n\tFri, 31 Oct 2025 10:02:26 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"I+v4gG5F\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1761901346;\n\tbh=ARNJaHoJEyuNCBvkdGPgWuDM2vq4+y+jYW+igF87zvk=;\n\th=Date:Subject:To:References:From:In-Reply-To:From;\n\tb=I+v4gG5F4/yL12YuHReEgu23j+IRcI9RaWWrJm0+CVLPWRDtsvniiAWD7SqjozMXD\n\tiKWDsCQ2zFO6KR5NyaL771DvtWoijpcAXDhQ6UMcpND5+8DyTaj7jm0ywCQD+eZCiL\n\tqP+IM6viqPR/7VPWQK+v4+9cwFYjAh/yXX2U8O74=","Message-ID":"<c686e5d5-903b-4aac-9bd1-89c37e30f87f@ideasonboard.com>","Date":"Fri, 31 Oct 2025 10:04:13 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v2 1/2] test: utils: Validate hex sign extension","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>,\n\tlibcamera devel <libcamera-devel@lists.libcamera.org>","References":"<20251030181127.1059501-1-kieran.bingham@ideasonboard.com>\n\t<20251030181127.1059501-2-kieran.bingham@ideasonboard.com>","From":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","Content-Language":"en-US, hu-HU","In-Reply-To":"<20251030181127.1059501-2-kieran.bingham@ideasonboard.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"8bit","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":36567,"web_url":"https://patchwork.libcamera.org/comment/36567/","msgid":"<20251031090930.GH797@pendragon.ideasonboard.com>","date":"2025-10-31T09:09:30","subject":"Re: [PATCH v2 1/2] test: utils: Validate hex sign extension","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"More tests \\o/\n\nOn Thu, Oct 30, 2025 at 06:11:26PM +0000, Kieran Bingham wrote:\n> Converting strings to hex stores data in a uint64_t. This can\n> incorrectly sign extend if the type being converted is signed.\n> \n> Provide tests to be sure that the signed conversion is correct.\n> \n> This is known to fail, so report as expected failure.\n> \n> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> ---\n>  test/meson.build |  2 +-\n>  test/utils.cpp   | 17 +++++++++++++++++\n>  2 files changed, 18 insertions(+), 1 deletion(-)\n> \n> diff --git a/test/meson.build b/test/meson.build\n> index 52f04364e4fc..96c4477f04b2 100644\n> --- a/test/meson.build\n> +++ b/test/meson.build\n> @@ -73,7 +73,7 @@ internal_tests = [\n>      {'name': 'timer-fail', 'sources': ['timer-fail.cpp'], 'should_fail': true},\n>      {'name': 'timer-thread', 'sources': ['timer-thread.cpp']},\n>      {'name': 'unique-fd', 'sources': ['unique-fd.cpp']},\n> -    {'name': 'utils', 'sources': ['utils.cpp']},\n> +    {'name': 'utils', 'sources': ['utils.cpp'], 'should_fail': true},\n>      {'name': 'vector', 'sources': ['vector.cpp']},\n>      {'name': 'yaml-parser', 'sources': ['yaml-parser.cpp']},\n>  ]\n> diff --git a/test/utils.cpp b/test/utils.cpp\n> index ca2e4f3b3e85..b5ce94e5e912 100644\n> --- a/test/utils.cpp\n> +++ b/test/utils.cpp\n> @@ -218,6 +218,23 @@ protected:\n>  \t\tos << utils::hex(static_cast<uint64_t>(0x42), 1) << \" \";\n>  \t\tref += \"0x42 \";\n>  \n> +\t\tos << utils::hex(static_cast<int8_t>(-1)) << \" \";\n> +\t\tref += \"0xff \";\n> +\t\tos << utils::hex(static_cast<uint8_t>(-1)) << \" \";\n> +\t\tref += \"0xff \";\n> +\t\tos << utils::hex(static_cast<int16_t>(-1)) << \" \";\n> +\t\tref += \"0xffff \";\n> +\t\tos << utils::hex(static_cast<uint16_t>(-1)) << \" \";\n> +\t\tref += \"0xffff \";\n> +\t\tos << utils::hex(static_cast<int32_t>(-1)) << \" \";\n> +\t\tref += \"0xffffffff \";\n> +\t\tos << utils::hex(static_cast<uint32_t>(-1)) << \" \";\n> +\t\tref += \"0xffffffff \";\n> +\t\tos << utils::hex(static_cast<int64_t>(-1)) << \" \";\n> +\t\tref += \"0xffffffffffffffff \";\n> +\t\tos << utils::hex(static_cast<uint64_t>(-1)) << \" \";\n> +\t\tref += \"0xffffffffffffffff \";\n> +\n>  \t\tstd::string s = os.str();\n>  \t\tif (s != ref) {\n>  \t\t\tcerr << \"utils::hex() test failed, expected '\" << ref","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 8BBC3C3259\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 31 Oct 2025 09:09:47 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 192DD60970;\n\tFri, 31 Oct 2025 10:09:47 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 49C75606E6\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 31 Oct 2025 10:09:45 +0100 (CET)","from pendragon.ideasonboard.com (unknown [193.209.96.36])\n\tby perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 2CE3E520;\n\tFri, 31 Oct 2025 10:07:53 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"llSmHps3\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1761901674;\n\tbh=itsK6mOEep5wwlXZTEC+3y9y9AE/eqgayKT9RFXMK9g=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=llSmHps3kpOvCMuQkVNQnJ2MGTWpqeLvKrQ4nI00cLhI9yml6jTQvr9RdVA2s/Vbv\n\tfM7DwSNiwOkww7536NbJF9hBGklv2C+TxUjlGq7kCPazuoLb50UpvaDYSN9j0Op+f5\n\tsJI6mVo33M1kCOtBOEn9Apo+MwLFa8TTJofWJ4Kc=","Date":"Fri, 31 Oct 2025 11:09:30 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Subject":"Re: [PATCH v2 1/2] test: utils: Validate hex sign extension","Message-ID":"<20251031090930.GH797@pendragon.ideasonboard.com>","References":"<20251030181127.1059501-1-kieran.bingham@ideasonboard.com>\n\t<20251030181127.1059501-2-kieran.bingham@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20251030181127.1059501-2-kieran.bingham@ideasonboard.com>","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>"}}]