From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS22989 209.51.188.0/24 X-Spam-Status: No, score=-3.8 required=3.0 tests=AWL,BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, NICE_REPLY_A,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL, SPF_HELO_PASS,SPF_PASS shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id B14281F4B4 for ; Mon, 5 Apr 2021 13:02:30 +0000 (UTC) Received: from localhost ([::1]:52248 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lTOs9-0004Bh-I5 for normalperson@yhbt.net; Mon, 05 Apr 2021 09:02:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43642) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lTOs2-00049w-7d for bug-gnulib@gnu.org; Mon, 05 Apr 2021 09:02:22 -0400 Received: from mo4-p00-ob.smtp.rzone.de ([85.215.255.23]:35334) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lTOrz-0007ZG-67 for bug-gnulib@gnu.org; Mon, 05 Apr 2021 09:02:21 -0400 ARC-Seal: i=1; a=rsa-sha256; t=1617627735; cv=none; d=strato.com; s=strato-dkim-0002; b=sMq4oE0L8iZHoYUCwKsKnG6qCilWfFI1I8KM1MkGY4s1zA10DJlOx9LRCHMEFS6ieN 7UM/uxvaFdfF/mY+1T+Heh+4h6bZf59u9kngO6ifIU7dvUcamoawZMEE/3VaGO6bb/ks XEa3pgoxnW3hkyFWhKQPSCEWZ0F/OuQ808l4K4qEOwHIc2DDc9Mdo7bMtL8diiZ3FH+F Bv2X29CUuENXXRwK1+bk6rV/wrPwVYSgmj2hG+QSd5E8C1RvgXTFhWL3TT1HUUPCNOoO p1eyVIEhGKMS6MEUCm5MnXIPgZXpNJKGpfSyvWK5rp6AWAZgS91CjHXRLmISh9tg+6pG A6Zw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1617627735; s=strato-dkim-0002; d=strato.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=WIj9J0N3WItObGwls/IfA2vuRBHr+T8Abq+tIK723gA=; b=FqOPcBdk2F17QkQY7AUnaYVt7TEZx0jaLsbxAubcwim9uxFPusZp0FWUYjor6nGhpW 6tFLg1/44/a55co3WEOPMNvxOznVAFR4N9wO+hz1Z8MWEk0JiA5c6lo35TNQ51cKPudF ZvOZAy74BPMdGr4hMqWTX/w391/NpQSABXSoSAY4YmuEyWgxbk0Kbeb4X68MWT7xSVyz G52GuI+wzW3/jSt/tTqPzIN3MDBfvLkgE6YUjcRLr4ZekJkVxk/eRNk1fPSuD6Hsk9JY /e37L7fCe+pVqDLGJ3g2TSzYpYmBEiOL+FrbPUxUwMJyKzN61ZcInXB5Yavm6y72j4On SHKQ== ARC-Authentication-Results: i=1; strato.com; dkim=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1617627735; s=strato-dkim-0002; d=clisp.org; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=WIj9J0N3WItObGwls/IfA2vuRBHr+T8Abq+tIK723gA=; b=cl28NoV7sSVY4KekQDaQG6DbrUbNSCkvwdSMhpLJ0KRFgAeCg9MswdD+OTBU9XWxDe F9Ti7x+3hdANAK0rh+WVoITJ2MlFR7bn1e+NluB73cHoVkaAQyMvTxof4XGuJm+PgVxJ 4j19bbCML1xb4dnaAMDwUjgd2+qoM5V2gg/WxdVyBA79LYpMUxs7Nk2wex+DmoPqsRRS Vp9D7p09Z2fWZiAMZcFBbeEd0k5a4uBaG85eUpqYdUC73E2N6o/B0oRnELXJC6LuWWcU sRluEum8oDN7OydeQj2VVaL6XfQ6ZAEsiz12aDtDVZOznAFLQ/XRcrW/96MUXishhyhU c8rg== Authentication-Results: strato.com; dkim=none X-RZG-AUTH: ":Ln4Re0+Ic/6oZXR1YgKryK8brlshOcZlIWs+iCP5vnk6shH+AHjwLuWOHqf0y5JW" X-RZG-CLASS-ID: mo00 Received: from bruno.haible.de by smtp.strato.de (RZmta 47.23.1 DYNA|AUTH) with ESMTPSA id z01445x35D2FecM (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (curve X9_62_prime256v1 with 256 ECDH bits, eq. 3072 bits RSA)) (Client did not present a certificate); Mon, 5 Apr 2021 15:02:15 +0200 (CEST) From: Bruno Haible To: bug-gnulib@gnu.org Subject: Re: [PATCH] hamt: New module. Date: Mon, 05 Apr 2021 15:02:14 +0200 Message-ID: <15708777.xBiI4uJm3L@omega> User-Agent: KMail/5.1.3 (Linux/4.4.0-206-generic; KDE/5.18.0; x86_64; ; ) In-Reply-To: <20210403092502.1418071-1-marc.nieper+gnu@gmail.com> References: <20210403092502.1418071-1-marc.nieper+gnu@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" Received-SPF: none client-ip=85.215.255.23; envelope-from=bruno@clisp.org; helo=mo4-p00-ob.smtp.rzone.de X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, NICE_REPLY_A=-0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: bug-gnulib@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Gnulib discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Marc =?ISO-8859-1?Q?Nieper=2DWi=DFkirchen?= Errors-To: bug-gnulib-bounces+normalperson=yhbt.net@gnu.org Sender: "bug-gnulib" Hi Marc, > * tests/test-hamt.c: New file. Can you please have a quick look whether these Coverity findings (from our weekly Coverity run) are relevant? ________________________________________________________________________________________________________ *** CID 1503613: Null pointer dereferences (REVERSE_INULL) /gllib/hamt.c: 876 in bucket_do_while() 870 size_t cnt = 0; 871 size_t elt_count = bucket->elt_count; 872 Hamt_entry *const *elts = bucket->elts; 873 for (size_t i = 0; i < elt_count; ++i) 874 { 875 *success = proc (elts[i], data); >>> CID 1503613: Null pointer dereferences (REVERSE_INULL) >>> Null-checking "success" suggests that it may be null, but it has already been dereferenced on all paths leading to the check. 876 if (!success) 877 return cnt; 878 ++cnt; 879 } 880 return cnt; 881 } ________________________________________________________________________________________________________ *** CID 1503612: Uninitialized variables (UNINIT) /gllib/hamt.c: 952 in hamt_iterator() 946 Hamt_iterator iter; 947 iter.hamt = hamt_copy (hamt); 948 Hamt_entry *entry = hamt->root; 949 if (entry == NULL) 950 { 951 iter.depth = -1; >>> CID 1503612: Uninitialized variables (UNINIT) >>> Using uninitialized value "iter". Field "iter.path" is uninitialized. 952 return iter; 953 } 954 iter.depth = 0; 955 iter.path = 0; 956 iter.position = 0; 957 while (iter.entry[iter.depth] = entry, entry_type (entry) == subtrie_entry) ________________________________________________________________________________________________________ *** CID 1503618: Incorrect expression (PW.ASSIGN_WHERE_COMPARE_MEANT) /gltests/test-hamt.c: 155 in () 149 ASSERT (hamt_do_while (hamt2, proc, &flag) == 4); 150 ASSERT (sum == 52); 151 152 hamt1 = hamt_remove (hamt2, &x4); 153 sum = 0; 154 ASSERT (hamt_do_while (hamt2, proc, &flag) == 4); >>> CID 1503618: Incorrect expression (PW.ASSIGN_WHERE_COMPARE_MEANT) >>> use of "=" where "==" may have been intended 155 ASSERT (sum = 52); 156 sum = 0; 157 ASSERT (hamt_do_while (hamt1, proc, &flag) == 3); 158 ASSERT (sum = 48); 159 160 hamt_free (hamt1); ________________________________________________________________________________________________________ *** CID 1503615: Incorrect expression (PW.ASSIGN_WHERE_COMPARE_MEANT) /gltests/test-hamt.c: 158 in () 152 hamt1 = hamt_remove (hamt2, &x4); 153 sum = 0; 154 ASSERT (hamt_do_while (hamt2, proc, &flag) == 4); 155 ASSERT (sum = 52); 156 sum = 0; 157 ASSERT (hamt_do_while (hamt1, proc, &flag) == 3); >>> CID 1503615: Incorrect expression (PW.ASSIGN_WHERE_COMPARE_MEANT) >>> use of "=" where "==" may have been intended 158 ASSERT (sum = 48); 159 160 hamt_free (hamt1); 161 hamt_free (hamt2); 162 free_element (y5); 163 } ________________________________________________________________________________________________________ *** CID 1503614: (ASSERT_SIDE_EFFECT) /gltests/test-hamt.c: 158 in test_general() 152 hamt1 = hamt_remove (hamt2, &x4); 153 sum = 0; 154 ASSERT (hamt_do_while (hamt2, proc, &flag) == 4); 155 ASSERT (sum = 52); 156 sum = 0; 157 ASSERT (hamt_do_while (hamt1, proc, &flag) == 3); >>> CID 1503614: (ASSERT_SIDE_EFFECT) >>> Assignment "sum = 48" has a side effect. This code will work differently in a non-debug build. 158 ASSERT (sum = 48); 159 160 hamt_free (hamt1); 161 hamt_free (hamt2); 162 free_element (y5); 163 } /gltests/test-hamt.c: 155 in test_general() 149 ASSERT (hamt_do_while (hamt2, proc, &flag) == 4); 150 ASSERT (sum == 52); 151 152 hamt1 = hamt_remove (hamt2, &x4); 153 sum = 0; 154 ASSERT (hamt_do_while (hamt2, proc, &flag) == 4); >>> CID 1503614: (ASSERT_SIDE_EFFECT) >>> Assignment "sum = 52" has a side effect. This code will work differently in a non-debug build. 155 ASSERT (sum = 52); 156 sum = 0; 157 ASSERT (hamt_do_while (hamt1, proc, &flag) == 3); 158 ASSERT (sum = 48); 159 160 hamt_free (hamt1);