From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 56F8C740034 for ; Thu, 21 Sep 2023 12:56:48 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=9FZ2/BidDxxXZYDXluCvyUCTOOVQpzJ9ceqLxZeUZLM=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:Received-SPF:From:To:CC:Subject:Date:Message-ID:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding:Content-Type; s=20140610; t=1695301006; v=1; b=pREdH/tQJRmIAEZfPcG1pg9fq3hdeck6WnuJlUD3266iUvgVlWyVhzNg3h4CvlPVMzpiLoV1 hOOxbY3C+Rp67xkiie759zI+Ucbas7VlfEXsvy30jk8Ksp/g81P/qAHayWrAyG330eiCH3MmkUg jD9UGG8tEeHoXaMUlkE41c/M= X-Received: by 127.0.0.2 with SMTP id UKR2YY7687511xuIgnbfTxHn; Thu, 21 Sep 2023 05:56:46 -0700 X-Received: from NAM10-DM6-obe.outbound.protection.outlook.com (NAM10-DM6-obe.outbound.protection.outlook.com [40.107.93.84]) by mx.groups.io with SMTP id smtpd.web10.16132.1695301006120292859 for ; Thu, 21 Sep 2023 05:56:46 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JQjbHLTmzE9twz7Fc0h+jtUH5g6RpVSdIdhFjlTqkUf0pngfp6UtLC/ljMalJuDA0jbJZw+bVNUVzihVE4eRvtlZgnJeO5n+NPLwrMVYjv0ulUgHrHS5UjKbq7BrnLOkDDqKaR+dawVYhY8OfNuTZLBUcvkf/57Shvyhj27xOrUzJF1FHNoRNXjyodPUk3qp8gtvY8mla6Fdr1nJ1K4T+l5jDKRRzhUjgG72llM4HwFUYxMqPGWpqh3tiDzYb9WHjN4IL72qv08v955XOML/T3fIXAxNOChtCYS8XURj01KmbNO87NCKfj/zE36A0jOTx6TXFllTC0DHxRul8WE3JQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=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; bh=93Ubm3I+3kzMCuiWfaLuZ5R1twOLZWSNsN54DgUYuuY=; b=Rb170m8ULvKAdNpVYEuG595foKrcudRAh4yuJ4/XY523lfyvRjwrbpRxBPGcCOY1kK4zMm0OakaHkTWWI5uYkgN0w3x7bCkZJFOcWP7zO17M7Cw1vSNRbVlTeF9Mm40+Bcpmk3K6QjzffSM8nYDG4+TKLE8qdfTXgs5Vr6yCQahxyI5ED7HoMelUzwEao2rQze0tMO8X44gDUyrlyo84NBEc0wfGXFyMPKXJQnZXNaIpHgG+n8MlN+9NXXNJMAdyg7ii3E6ZC6GvdzJOwIXRcgTS87WqSE6vxt1ncmI70YbHMmOxDmo/uekJL1AzLrv/WDhM9YRGpxDCwmTvus2bGw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=edk2.groups.io smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none X-Received: from BL1PR13CA0368.namprd13.prod.outlook.com (2603:10b6:208:2c0::13) by SJ2PR12MB8181.namprd12.prod.outlook.com (2603:10b6:a03:4f6::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6792.28; Thu, 21 Sep 2023 12:56:41 +0000 X-Received: from BL02EPF0001A103.namprd05.prod.outlook.com (2603:10b6:208:2c0:cafe::36) by BL1PR13CA0368.outlook.office365.com (2603:10b6:208:2c0::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6838.11 via Frontend Transport; Thu, 21 Sep 2023 12:56:41 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C X-Received: from mail.nvidia.com (216.228.117.160) by BL02EPF0001A103.mail.protection.outlook.com (10.167.241.133) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6792.19 via Frontend Transport; Thu, 21 Sep 2023 12:56:40 +0000 X-Received: from rnnvmail202.nvidia.com (10.129.68.7) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41; Thu, 21 Sep 2023 05:56:27 -0700 X-Received: from rnnvmail202.nvidia.com (10.129.68.7) by rnnvmail202.nvidia.com (10.129.68.7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41; Thu, 21 Sep 2023 05:56:26 -0700 X-Received: from NV-CL38DL3.nvidia.com (10.127.8.11) by mail.nvidia.com (10.129.68.7) with Microsoft SMTP Server id 15.2.986.41 via Frontend Transport; Thu, 21 Sep 2023 05:56:25 -0700 From: "Nickle Wang via groups.io" To: CC: Abner Chang , Igor Kulchytskyy , "Nick Ramirez" Subject: [edk2-devel] [PATCH v2] RedfishPkg/JsonLib: fix JsonObjectGetValue issue Date: Thu, 21 Sep 2023 20:56:25 +0800 Message-ID: <20230921125625.2629-1-nicklew@nvidia.com> MIME-Version: 1.0 X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL02EPF0001A103:EE_|SJ2PR12MB8181:EE_ X-MS-Office365-Filtering-Correlation-Id: 2e362fe7-7ecc-45bf-0ef6-08dbbaa23351 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Message-Info: gmiou2s2eSFGqIDaMxfXp8gBeb5MANKaAZbQEIxlX6a58EOdyAEKXhdwr4iL1Qk8KXAhPO5zx/KxYcRFJPgQlqDubXj0xFPI0j4UAxYd1VKXEzM0+w7Er/+yzjut2Og4U0glDwXjPdQ6Ydil5OvmfCK/EO+Fcp1qgv0GX5NFxLYNwjKKkejWFuuv1oSiVXGbo7ZNr4MomxaXhVs2VBQMIsSZmfSKauHkD/oELyZ92gOnuhqSkA+0A6vA7ZBRcsq2D4vT8CVv0y8j7+qE4zqhgG0PqVsfJxmlVxq3DDrt3bZNV5IfEZT8KvB1xlpT5F0Iy1y5WNDUsDtl1SGJ37cGI4piK7NEdbHMZqTd62FNTmTCFRCvrRFjg6v8nLbuxFFEOnSlb9KUwboGqO2wHegtmVkKzsz2uJ3jBAwpedtUtKvs+r11FtUMcC+FYF0C0OocPp7HBAHhGBonTrPumnM6njuiFfA2FCSy/RTKnKUzmUHeLULmqE9motAbr9DqetRdu3RoZMsXNMbkF8AbMhjFAY4UrTafySORCF5rq4zSvEb9sczP59tZ5n4FDC/rNnKQY5CarcpeLBNsnD78Le79F/j0szfgTay975Hx9Ab12SYmBnONAsm6WLikw8aHJ4Wi/sU+bsEZcFaCntGvfiajyG4eoiy2baUdmtLCQh4qAoC6EKrcyDZlGSnqe1UEYMBISEuxi3vVEwaKe+xrTS4Z6qdaK2w14QOs/QRSW6FTBo62EKCIe2fpd6S52XRQGteY X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Sep 2023 12:56:40.9600 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2e362fe7-7ecc-45bf-0ef6-08dbbaa23351 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.160];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BL02EPF0001A103.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB8181 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,nicklew@nvidia.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: bbfFT91OInn1T9P0JvpukKuvx7686176AA= Content-Transfer-Encoding: quoted-printable Content-Type: text/plain X-Spam-Flag: yes X-Spam-Level: ************ X-GND-Spam-Score: 190 X-GND-Status: SPAM Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b="pREdH/tQ"; dmarc=none; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}") JsonObjectGetValue() cannot find corresponding JSON value when the EDKII_JSON_VALUE object is created by another UEFI driver. This is because "hashtable_seed" is initialized by current time while JsonLib is loaded. So, "hashtable_seed" will be different in each individual UEFI driver. Signed-off-by: Nickle Wang Cc: Abner Chang Cc: Igor Kulchytskyy Cc: Nick Ramirez --- RedfishPkg/Library/JsonLib/JsonLib.inf | 1 + RedfishPkg/Library/JsonLib/JsonLib.c | 35 ++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/RedfishPkg/Library/JsonLib/JsonLib.inf b/RedfishPkg/Library/Js= onLib/JsonLib.inf index 9d52a622e13a..b0d1bcac7cb3 100644 --- a/RedfishPkg/Library/JsonLib/JsonLib.inf +++ b/RedfishPkg/Library/JsonLib/JsonLib.inf @@ -15,6 +15,7 @@ MODULE_TYPE =3D DXE_DRIVER VERSION_STRING =3D 1.0 LIBRARY_CLASS =3D JsonLib|DXE_DRIVER UEFI_APPLICATION U= EFI_DRIVER + CONSTRUCTOR =3D JsonLibConstructor =20 # # VALID_ARCHITECTURES =3D IA32 X64 ARM AARCH64 RISCV64 diff --git a/RedfishPkg/Library/JsonLib/JsonLib.c b/RedfishPkg/Library/Json= Lib/JsonLib.c index 9b758b940293..6c3373d205c3 100644 --- a/RedfishPkg/Library/JsonLib/JsonLib.c +++ b/RedfishPkg/Library/JsonLib/JsonLib.c @@ -19,6 +19,8 @@ =20 #include "jansson.h" =20 +extern volatile UINT32 hashtable_seed; + /** The function is used to initialize a JSON value which contains a new JSO= N array, or NULL on error. Initially, the array is empty. @@ -1138,3 +1140,36 @@ JsonGetType ( { return (EDKII_JSON_TYPE)(((json_t *)JsonValue)->type); } + +/** + JSON Library constructor. + + @param ImageHandle The image handle. + @param SystemTable The system table. + + @retval EFI_SUCCESS Protocol listener is registered successfully. + +**/ +EFI_STATUS +EFIAPI +JsonLibConstructor ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + // + // hashtable_seed is initalized by current time while JsonLib is loaded. + // Due to above mechanism, hashtable_seed will be different in each indi= vidual + // UEFI driver. As the result, the hash of same key in different UEFI dr= iver + // would be different. This breaks JsonObjectGetValue() because + // JsonObjectGetValue() won't be able to find corresponding JSON value i= f + // this EDKII_JSON_VALUE is created by another UEFI driver. + // + // Initial the seed to a fixed magic value for JsonLib to be working in = all + // UEFI drivers. This fixed number will be removed after the protocol ve= rsion + // of JsonLib is implemented in the future. + // + hashtable_seed =3D 0xFDAE2143; + + return EFI_SUCCESS; +} --=20 2.17.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#108942): https://edk2.groups.io/g/devel/message/108942 Mute This Topic: https://groups.io/mt/101499238/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-