From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 2429D456F3; Tue, 30 Jul 2024 10:54:52 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B391F40261; Tue, 30 Jul 2024 10:54:51 +0200 (CEST) Received: from inbox.dpdk.org (inbox.dpdk.org [95.142.172.178]) by mails.dpdk.org (Postfix) with ESMTP id B0C1B40041 for ; Tue, 30 Jul 2024 10:11:09 +0200 (CEST) Received: by inbox.dpdk.org (Postfix, from userid 33) id A84AC456F8; Tue, 30 Jul 2024 10:11:09 +0200 (CEST) From: bugzilla@dpdk.org To: dev@dpdk.org Subject: [DPDK/core Bug 1506] Fix undefined behavior in RTE_IPV4 macro Date: Tue, 30 Jul 2024 08:11:09 +0000 X-Bugzilla-Reason: AssignedTo X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: DPDK X-Bugzilla-Component: core X-Bugzilla-Version: 24.07 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: user202729@protonmail.com X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Resolution: X-Bugzilla-Priority: Normal X-Bugzilla-Assigned-To: dev@dpdk.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version rep_platform op_sys bug_status bug_severity priority component assigned_to reporter target_milestone Message-ID: Content-Type: multipart/alternative; boundary=17223270690.8A6DbCA.213503 Content-Transfer-Encoding: 7bit X-Bugzilla-URL: http://bugs.dpdk.org/ Auto-Submitted: auto-generated X-Auto-Response-Suppress: All MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org --17223270690.8A6DbCA.213503 Date: Tue, 30 Jul 2024 10:11:09 +0200 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://bugs.dpdk.org/ Auto-Submitted: auto-generated X-Auto-Response-Suppress: All https://bugs.dpdk.org/show_bug.cgi?id=3D1506 Bug ID: 1506 Summary: Fix undefined behavior in RTE_IPV4 macro Product: DPDK Version: 24.07 Hardware: All OS: All Status: UNCONFIRMED Severity: normal Priority: Normal Component: core Assignee: dev@dpdk.org Reporter: user202729@protonmail.com Target Milestone: --- Currently we have the following definition ``` /** Create IPv4 address */ #define RTE_IPV4(a, b, c, d) ((uint32_t)(((a) & 0xff) << 24) | \ (((b) & 0xff) << 16) | \ (((c) & 0xff) << 8) | \ ((d) & 0xff)) ``` The problem is that the cast to `uint32_t` is done after the shift, and overflowing left shift is undefined behavior in C and C++: https://stackoverflow.com/questions/3784996/why-does-left-shift-operation-i= nvoke-undefined-behaviour-when-the-left-side-oper . The fix is easy, just cast the `(a) & 0xff` to `uint32_t` before shifting i= t by 24. --=20 You are receiving this mail because: You are the assignee for the bug.= --17223270690.8A6DbCA.213503 Date: Tue, 30 Jul 2024 10:11:09 +0200 MIME-Version: 1.0 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://bugs.dpdk.org/ Auto-Submitted: auto-generated X-Auto-Response-Suppress: All
Bug ID 1506
Summary Fix undefined behavior in RTE_IPV4 macro
Product DPDK
Version 24.07
Hardware All
OS All
Status UNCONFIRMED
Severity normal
Priority Normal
Component core
Assignee dev@dpdk.org
Reporter user202729@protonmail.com
Target Milestone ---

Currently we have the following de=
finition

```
/** Create IPv4 address */
#define RTE_IPV4(a, b, c, d) ((uint32_t)(((a) & 0xff) << 24) | \
                                           (((b) & 0xff) << 16) |=
 \
                                           (((c) & 0xff) << 8)  |=
 \
                                           ((d) & 0xff))
```

The problem is that the cast to `uint32_t` is done after the shift, and
overflowing left shift is undefined behavior in C and C++:
https://stack=
overflow.com/questions/3784996/why-does-left-shift-operation-invoke-undefin=
ed-behaviour-when-the-left-side-oper
.

The fix is easy, just cast the `(a) & 0xff` to `uint32_t` before shifti=
ng it by
24.
          


You are receiving this mail because:
  • You are the assignee for the bug.
=20=20=20=20=20=20=20=20=20=20
= --17223270690.8A6DbCA.213503--