From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=40.92.65.58; helo=eur01-he1-obe.outbound.protection.outlook.com; envelope-from=marvin.haeuser@outlook.com; receiver=edk2-devel@lists.01.org Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-oln040092065058.outbound.protection.outlook.com [40.92.65.58]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 250F321184ACB for ; Wed, 31 Oct 2018 13:08:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IC7Q0BA/pK5FqLcV055kxkRUP18UtS2nep/ncgzUPJ0=; b=J8TUvZIj44sF2UmytD9N7BU5xw921mUFKPoDVbbvBVYnZ6B/jVjXxFcCPXZnunI7rJWwzXi7E9GQvvaYWeQWLfI0v6uhgXxpGOwk4Cf+v3bgKwQ7oHYnsuom2iialbBr6rJBj3MNLwx70U4006GZqDQiqcB8u60Ga/yKVmay0zV7R1KBz/4gmWI9q1pFNW9B5PUxUAQkOpXGh7EQ95TCgjA6sHsJbZYpqbtCF2LHIT26sKJyjEi0xNqrVjii3yUl0FKVBZeWCu3rPIZnVk4jD9rKj1uwgovg+U2eaBs+mi2QgHYwAnqBYukIQ29oZ0OX9AIezOVuJmrCh6yTFSs0tQ== Received: from DB5EUR01FT013.eop-EUR01.prod.protection.outlook.com (10.152.4.51) by DB5EUR01HT189.eop-EUR01.prod.protection.outlook.com (10.152.4.168) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1294.14; Wed, 31 Oct 2018 20:08:36 +0000 Received: from VI1PR0801MB1790.eurprd08.prod.outlook.com (10.152.4.51) by DB5EUR01FT013.mail.protection.outlook.com (10.152.4.239) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1294.14 via Frontend Transport; Wed, 31 Oct 2018 20:08:36 +0000 Received: from VI1PR0801MB1790.eurprd08.prod.outlook.com ([fe80::342c:bfb5:c08a:e4de]) by VI1PR0801MB1790.eurprd08.prod.outlook.com ([fe80::342c:bfb5:c08a:e4de%8]) with mapi id 15.20.1273.027; Wed, 31 Oct 2018 20:08:35 +0000 From: =?iso-8859-1?Q?Marvin_H=E4user?= To: "edk2-devel@lists.01.org" CC: "michael.d.kinney@intel.com" , "liming.gao@intel.com" Thread-Topic: [PATCH 1/1] MdePkg/Base.h: Implement BASE_CR() via OFFSET_OF(). Thread-Index: AQHUcVWBgAjGoTO9Pki8gs1UPnuKfQ== Date: Wed, 31 Oct 2018 20:08:35 +0000 Message-ID: References: In-Reply-To: Accept-Language: de-DE, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM5PR0601CA0047.eurprd06.prod.outlook.com (2603:10a6:203:68::33) To VI1PR0801MB1790.eurprd08.prod.outlook.com (2603:10a6:800:5b::15) x-incomingtopheadermarker: OriginalChecksum:8B44C52FF661CC85A38181D75AE307294B9074FDFF86EE2AE78D0B65577268DE; UpperCasedChecksum:1C5831C0A1D02538603C3A0600DA0D02524B07C699C43CFCD2EFCD49FB586FC8; SizeAsReceived:7624; Count:50 x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [KMJOgIg1t25Hf1TjIj3Hk9cDDVqNVJqi] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; DB5EUR01HT189; 6:STIXYaM0jCQG0RCetF1gGFn2WwTRvyyebO39oDa5oVTVqE/vpBkummhuU2ehVfFxppZntTN0nfcqpeYu2soP6vmujvbpbLC//rcGQXJrkLoF3w5jab7LguUoCFzomDbqJpmPGDP2TPqmNU/ikJeSy9gPplOV7I/h3KtQgejb0867wXOOfUaZEuV3c9l569iU0XwGs99hTQd7EKvui5Yy4bxOg8q3hZH3hiqWK4kB/P/DXxObjFmzFUhWdUs2UXP75nI7xFnracYziX4r6XHz66Q+Qr804o/ESM3bzGQeM3bPUbM87rMXjbw8z/HhFwoIN3Wr107euwZcEluEt9Zgj2coy+9cOD8+7PVxa18dXlKO1dGrCkc34UhVQWxSU2nZgGop5RDpFuVY+SM0VkUpbpgGGe7cniWvJv6jDyEo9o7IseSJoFhRkG6ryVNy+iA5oTcFk4JIBqjd72txVI6wKg==; 5:bQgNDn0F7F/XxMvLQ7lT0T38fMBocCuEBtywcCfE0deX448KuKJ0ODbRMZ8hiU9z/rIvImnNpSCULQPs0i+yvJ3Xi0t17y00CJyHCbIhpAO7COZq7DD5OhhhhC3urZICB6kbJJj7NB+EHn0JxaQqaFt6e171OCVB1BCFboKpBl8=; 7:Ph/wNi/AVlIplQT57FgeVxX1YA7K/c8oQ83nh0Xcehzx0B2Ihk5718HUtb59rPgk5E3wORCugSARDRWZOQvUwMquSmMEjQAeYRnmaDQuqu3NoE9izs72238C27XQh9ki4LU0t3RIpCiRI4XP/V8cYQ== x-incomingheadercount: 50 x-eopattributedmessage: 0 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(7020095)(201702061078)(5061506573)(5061507331)(1603103135)(2017031320274)(2017031324274)(2017031323274)(2017031322404)(1601125500)(1603101475)(1701031045); SRVR:DB5EUR01HT189; x-ms-traffictypediagnostic: DB5EUR01HT189: x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(4566010)(82015058); SRVR:DB5EUR01HT189; BCL:0; PCL:0; RULEID:; SRVR:DB5EUR01HT189; x-microsoft-antispam-message-info: tAXZBQLxLiGAyyI4z9HNQeX/eXy+WbJmZoTPX0yufdOzLR9Qkw95IZc+UkNfuPxQ MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 7181d4b0-87d6-4f4e-ba33-0d3746212cec X-MS-Exchange-CrossTenant-Network-Message-Id: 6328d1d3-bd34-42be-f3d6-08d63f6ca390 X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 7181d4b0-87d6-4f4e-ba33-0d3746212cec X-MS-Exchange-CrossTenant-originalarrivaltime: 31 Oct 2018 20:08:35.7863 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Internet X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5EUR01HT189 Subject: [PATCH 1/1] MdePkg/Base.h: Implement BASE_CR() via OFFSET_OF(). X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 31 Oct 2018 20:08:39 -0000 Content-Language: en-US Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Replace the current NULL pointer dereference to retrieve Field's offset with a call to OFFSET_OF(). This is implemented via __builtin_offsetof for GCC and Clang, which eliminates UB caught by Clang UndefinedBehaviorSanitizer. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Marvin Haeuser --- MdePkg/Include/Base.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MdePkg/Include/Base.h b/MdePkg/Include/Base.h index 523192fd79fc..bc877d8125a5 100644 --- a/MdePkg/Include/Base.h +++ b/MdePkg/Include/Base.h @@ -869,7 +869,7 @@ typedef UINTN *BASE_LIST; @return A pointer to the structure from one of it's elements. =20 **/ -#define BASE_CR(Record, TYPE, Field) ((TYPE *) ((CHAR8 *) (Record) - (CHA= R8 *) &(((TYPE *) 0)->Field))) +#define BASE_CR(Record, TYPE, Field) ((TYPE *) ((CHAR8 *) (Record) - OFFS= ET_OF (TYPE, Field))) =20 /** Rounds a value up to the next boundary using a specified alignment. --=20 2.19.1.windows.1