From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ed1-x532.google.com (mail-ed1-x532.google.com [IPv6:2a00:1450:4864:20::532]) by sourceware.org (Postfix) with ESMTPS id EA66F385DC03 for ; Thu, 9 Apr 2020 23:51:11 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org EA66F385DC03 Received: by mail-ed1-x532.google.com with SMTP id x62so461338ede.1 for ; Thu, 09 Apr 2020 16:51:11 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=lekA4L46a5F81dHN2cX4pKBRXzEiiCSVW35g9QclW3k=; b=C0MlBf0t93BmvkNPMZuG7PurSayYvvpQ8PcpKrBmKX7XpDFP+Mk85HP2pmJzct3XMB S7SEm9XNu07j4cY5y9qH8uOEvZGrCgRVLbmzdUDnTMJs8rtP+uDcufIgFd9q49OdQxKA rARqDpKUNEnYbXald3BASQkKjN7fWMK6+a3cXQBuISB2/I5KkC6Pmm2lTREIGEcPs6hq ux5E0xqNNOVBL41Z0/QuW2XJKkE/B7DrzGTobDF7BArm22BqnMVuCxhKovb3tajgUwhL xdjKI3vsjYz4ECMK+uS/Mm047qWoK4fzdd1ybj3exwDQ/yIErpe6lYYoW8UvDPJd4oS+ F7vA== X-Gm-Message-State: AGi0PuaZDgQvhtrYekQCE4dRWHizW9y25TJrkLYsmwXlyA0dk+7vKQEr +QRcOUdE4EmATDfL3Wt1PXrgDmJasWUazijN2kDpzCHuo94= X-Google-Smtp-Source: APiQypJU0aIKc7saDe4j8m2N7PKKgG+DiYM9DnLZ5UUauXibA3asFdBHJ67imzTPsKI0+v7CMjreq+oEuf2FE3i40Rg= X-Received: by 2002:a17:906:5248:: with SMTP id y8mr1361915ejm.129.1586476270819; Thu, 09 Apr 2020 16:51:10 -0700 (PDT) MIME-Version: 1.0 From: krokus Date: Thu, 9 Apr 2020 18:50:58 -0500 Message-ID: Subject: [PATCH] Undefined behavior reported in copy_bitwise To: gdb-patches@sourceware.org Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-10.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Apr 2020 23:51:13 -0000 gdb version 9.1, built with clang 8.0.0 on Ubuntu 18.04 (x86_64); --enable-ubsan (for clang's undefined behavior sanitizer) Executing command; `maint selftest copy_bitwise` bombs in runtime error: ../../gdb/utils.c:3432:28: runtime error: left shift of negative value -1 Closer look reveals the offending shift: `(~0 << nbits)`, apparently 0 is treated as signed int, resulting in negative complement. Explicitly stating it unsigned 0U fixes it and the `copy_bitwise` test passes ok. patch -p1: ```````` --- gdb/utils.c 2020-04-09 18:41:03.339065535 -0500 +++ gdb/utils.c 2020-04-09 18:41:24.427064851 -0500 @@ -3429,7 +3429,7 @@ buf |= *source << avail; buf &= (1 << nbits) - 1; - *dest = (*dest & (~0 << nbits)) | buf; + *dest = (*dest & (~0U << nbits)) | buf; } } ````````