{"id":24869,"url":"https://patchwork.libcamera.org/api/1.1/patches/24869/?format=json","web_url":"https://patchwork.libcamera.org/patch/24869/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/1.1/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":"<20251028182936.14362-1-kieran.bingham@ideasonboard.com>","date":"2025-10-28T18:29:36","name":"libcamera: base: utils: Prevent hex signed extension","commit_ref":null,"pull_url":null,"state":"superseded","archived":false,"hash":"818bde63a5a877e5083879a3765c4cd8d25de83f","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/1.1/people/4/?format=json","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/24869/mbox/","series":[{"id":5540,"url":"https://patchwork.libcamera.org/api/1.1/series/5540/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=5540","date":"2025-10-28T18:29:36","name":"libcamera: base: utils: Prevent hex signed extension","version":1,"mbox":"https://patchwork.libcamera.org/series/5540/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/24869/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/24869/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 31FD6C3259\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 28 Oct 2025 18:29:45 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 5249E6080D;\n\tTue, 28 Oct 2025 19:29:44 +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 DDC25606DE\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 28 Oct 2025 19:29:42 +0100 (CET)","from charm.hippo-penny.ts.net (unknown [209.38.108.23])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id B7CD413BE;\n\tTue, 28 Oct 2025 19:27: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=\"KHmZQI3G\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1761676073;\n\tbh=0bjppOVfhW4ORN8ppW0OK8emUmuaUUQV+umwtwQGjM0=;\n\th=From:To:Cc:Subject:Date:From;\n\tb=KHmZQI3GickMRx7CTmXqOuPUJlhbAApPeDfgxlJaJfDUp8W/aYAbObwfwutr4BqGh\n\t+sh+xxiQQ7CRlutIxKqJpHMPKCkmjmZCPGj+FtPUYKqfRHovIVug8UmfPbyzMYvGHK\n\tizQocHhgWO3vIIZVKLdVO0AQ6yRhLo7rYNibNe9U=","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","To":"libcamera devel <libcamera-devel@lists.libcamera.org>","Cc":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Subject":"[PATCH] libcamera: base: utils: Prevent hex signed extension","Date":"Tue, 28 Oct 2025 18:29:36 +0000","Message-ID":"<20251028182936.14362-1-kieran.bingham@ideasonboard.com>","X-Mailer":"git-send-email 2.51.0","MIME-Version":"1.0","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>"},"content":"When converting signed values to hex strings using the utils::hex\nhelpers, signed negative values get sign extended to the larger 64 bit\ntype.\n\nThis causes values such as 0x80 to be printed as 0xffffffffffffff80\ninstead.\n\nResolve this by first converting all signed integer types to an unsigned\ntype of the same size before extending to the larger type.\n\nSigned-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n---\n include/libcamera/base/utils.h | 6 +++---\n 1 file changed, 3 insertions(+), 3 deletions(-)","diff":"diff --git a/include/libcamera/base/utils.h b/include/libcamera/base/utils.h\nindex cb8caaa9bacc..fdc3fd91f1b6 100644\n--- a/include/libcamera/base/utils.h\n+++ b/include/libcamera/base/utils.h\n@@ -95,7 +95,7 @@ _hex hex(T value, unsigned int width = 0);\n template<>\n inline _hex hex<int8_t>(int8_t value, unsigned int width)\n {\n-\treturn { static_cast<uint64_t>(value), width ? width : 2 };\n+\treturn { static_cast<uint64_t>(static_cast<uint8_t>(value)), width ? width : 2 };\n }\n \n template<>\n@@ -107,7 +107,7 @@ inline _hex hex<uint8_t>(uint8_t value, unsigned int width)\n template<>\n inline _hex hex<int16_t>(int16_t value, unsigned int width)\n {\n-\treturn { static_cast<uint64_t>(value), width ? width : 4 };\n+\treturn { static_cast<uint64_t>(static_cast<uint16_t>(value)), width ? width : 4 };\n }\n \n template<>\n@@ -119,7 +119,7 @@ inline _hex hex<uint16_t>(uint16_t value, unsigned int width)\n template<>\n inline _hex hex<int32_t>(int32_t value, unsigned int width)\n {\n-\treturn { static_cast<uint64_t>(value), width ? width : 8 };\n+\treturn { static_cast<uint64_t>(static_cast<uint32_t>(value)), width ? width : 8 };\n }\n \n template<>\n","prefixes":[]}