From unknown Tue Jun 17 01:40:31 2025 X-Loop: help-debbugs@gnu.org Subject: bug#60928: [PATCH] bugfix/make_hash_table: fix segfault when arg< 0 for make-hash-table Resent-From: Blake Shaw Original-Sender: "Debbugs-submit" Resent-CC: bug-guile@gnu.org Resent-Date: Wed, 18 Jan 2023 08:39:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 60928 X-GNU-PR-Package: guile X-GNU-PR-Keywords: patch To: 60928@debbugs.gnu.org Cc: Blake Shaw X-Debbugs-Original-To: bug-guile@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.16740310897598 (code B ref -1); Wed, 18 Jan 2023 08:39:01 +0000 Received: (at submit) by debbugs.gnu.org; 18 Jan 2023 08:38:09 +0000 Received: from localhost ([127.0.0.1]:39111 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pI3xP-0001yR-Nd for submit@debbugs.gnu.org; Wed, 18 Jan 2023 03:38:09 -0500 Received: from lists.gnu.org ([209.51.188.17]:54778) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pI2bU-00082k-Hy for submit@debbugs.gnu.org; Wed, 18 Jan 2023 02:11:26 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pI2bU-0005DH-Bh for bug-guile@gnu.org; Wed, 18 Jan 2023 02:11:24 -0500 Received: from out2.migadu.com ([188.165.223.204]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pI2bR-000491-Da for bug-guile@gnu.org; Wed, 18 Jan 2023 02:11:24 -0500 X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=reproduciblemedia.com; s=key1; t=1674025873; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=L1d2bWhhtfyAXFwDOMAWDGn8xRvujpqIL6MrQnX7kq0=; b=dhQcDkezj64WBDlKA1k61FVQwH1lJfMP1eTwm61eFpU2mBEj9D84thX110Fz75jfmpTOY+ ZCGOU8aAHorR4PkSfDvV9k0z/zDjXTqHan+O35KAElKMh6Y6MkPTI8v3Fv4euoVYu27O8I i7VP8avmTGVXPv8GEESqWQ51CdXGrT8= From: Blake Shaw Date: Wed, 18 Jan 2023 14:10:22 +0700 Message-Id: <20230118071022.29809-1-blake@reproduciblemedia.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Migadu-Flow: FLOW_OUT Received-SPF: pass client-ip=188.165.223.204; envelope-from=blake@reproduciblemedia.com; helo=out2.migadu.com 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, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.4 (-) X-Mailman-Approved-At: Wed, 18 Jan 2023 03:38:06 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.4 (--) * libguile/hashtab.c (make_hash_table): FIX SEGMENTATION FAULT Currently on Guix if a user evokes (make-hash-table arg) where arg < 0, guile segfaults. This patch adds the most straight forward solution, checking if the value passed to make-hash-table is less than 0, and if so, throwing an error with scm_out_of_range to avoid segfaulting. It builds and passes all tests in a guix shell using the command: $ guix shell automake autoconf make flex gnulib gettext libtool \ gperf gmp git libffi -D guile guix -C -- \ ./autogen.sh && ./configure && make && make check afterwards, using: ./meta/guile -q => scheme@(guile-user)> (make-hash-table -1) ice-9/boot-9.scm:1685:16: In procedure raise-exception: Value out of range 0 to< 18446744073709551615: -1 as desired... I'm not familiar with the inner workings of libguile, but figured I'd offer a fix regardless, so take this this patch with a grain of salt, it was a quicky... --- libguile/hashtab.c | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/libguile/hashtab.c b/libguile/hashtab.c index b4f004c1d..9cb5d7a47 100644 --- a/libguile/hashtab.c +++ b/libguile/hashtab.c @@ -84,23 +84,24 @@ make_hash_table (unsigned long k, const char *func_name) SCM vector; scm_t_hashtable *t; int i = 0, n = k ? k : 31; - while (i + 1 < HASHTABLE_SIZE_N && n > hashtable_size[i]) - ++i; - n = hashtable_size[i]; - - vector = scm_c_make_vector (n, SCM_EOL); - - t = scm_gc_malloc_pointerless (sizeof (*t), s_hashtable); - t->min_size_index = t->size_index = i; - t->n_items = 0; - t->lower = 0; - t->upper = 9 * n / 10; + if (k < i) { + scm_out_of_range (func_name, scm_from_ulong (k)); + } else { + while (i + 1 < HASHTABLE_SIZE_N && n > hashtable_size[i]) + ++i; + n = hashtable_size[i]; + vector = scm_c_make_vector (n, SCM_EOL); + t = scm_gc_malloc_pointerless (sizeof (*t), s_hashtable); + t->min_size_index = t->size_index = i; + t->n_items = 0; + t->lower = 0; + t->upper = 9 * n / 10; /* FIXME: we just need two words of storage, not three */ - return scm_double_cell (scm_tc7_hashtable, SCM_UNPACK (vector), - (scm_t_bits)t, 0); + return scm_double_cell (scm_tc7_hashtable, SCM_UNPACK (vector), + (scm_t_bits)t, 0); + } } - void scm_i_rehash (SCM table, scm_t_hash_fn hash_fn, -- 2.38.1 From unknown Tue Jun 17 01:40:31 2025 X-Loop: help-debbugs@gnu.org Subject: bug#60928: [PATCH] bugfix/make_hash_table: fix segfault when arg< 0 for make-hash-table Resent-From: lloda Original-Sender: "Debbugs-submit" Resent-CC: bug-guile@gnu.org Resent-Date: Wed, 18 Jan 2023 09:11:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 60928 X-GNU-PR-Package: guile X-GNU-PR-Keywords: patch To: blake@reproduciblemedia.com, 60928@debbugs.gnu.org X-Debbugs-Original-To: Blake Shaw , "bug-guile@gnu.org" X-Debbugs-Original-Cc: 60928@debbugs.gnu.org Received: via spool by submit@debbugs.gnu.org id=B.167403303111166 (code B ref -1); Wed, 18 Jan 2023 09:11:02 +0000 Received: (at submit) by debbugs.gnu.org; 18 Jan 2023 09:10:31 +0000 Received: from localhost ([127.0.0.1]:39193 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pI4Sl-0002u2-5s for submit@debbugs.gnu.org; Wed, 18 Jan 2023 04:10:31 -0500 Received: from lists.gnu.org ([209.51.188.17]:60660) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pI4Sh-0002tp-D4 for submit@debbugs.gnu.org; Wed, 18 Jan 2023 04:10:29 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pI4Sh-0007hj-68 for bug-guile@gnu.org; Wed, 18 Jan 2023 04:10:27 -0500 Received: from mta-12-4.privateemail.com ([198.54.127.107]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pI4Se-0006wj-F1 for bug-guile@gnu.org; Wed, 18 Jan 2023 04:10:26 -0500 Received: from mta-12.privateemail.com (localhost [127.0.0.1]) by mta-12.privateemail.com (Postfix) with ESMTP id A3D7018007AB; Wed, 18 Jan 2023 04:10:12 -0500 (EST) Received: from [192.168.1.105] (unknown [51.154.167.214]) by mta-12.privateemail.com (Postfix) with ESMTPA id AAA0A18007AC; Wed, 18 Jan 2023 04:10:09 -0500 (EST) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.120.23.2.7\)) From: lloda In-Reply-To: <20230118071022.29809-1-blake@reproduciblemedia.com> Date: Wed, 18 Jan 2023 10:10:07 +0100 Content-Transfer-Encoding: quoted-printable Message-Id: <60817C7A-93F6-4987-8812-C46CF62C9104@sarc.name> References: <20230118071022.29809-1-blake@reproduciblemedia.com> X-Mailer: Apple Mail (2.3608.120.23.2.7) X-Virus-Scanned: ClamAV using ClamSMTP Received-SPF: pass client-ip=198.54.127.107; envelope-from=lloda@sarc.name; helo=MTA-12-4.privateemail.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.3 (-) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) It seems this is the same bug as https://bugs.gnu.org/60488 and = https://bugs.gnu.org/58154, at least it doesn't segfault in main = anymore. From unknown Tue Jun 17 01:40:31 2025 X-Loop: help-debbugs@gnu.org Subject: bug#60928: [PATCH] bugfix/make_hash_table: fix segfault when arg< 0 for make-hash-table Resent-From: Blake Shaw Original-Sender: "Debbugs-submit" Resent-CC: bug-guile@gnu.org Resent-Date: Thu, 19 Jan 2023 08:22:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 60928 X-GNU-PR-Package: guile X-GNU-PR-Keywords: patch To: lloda Cc: 60928@debbugs.gnu.org X-Debbugs-Original-Cc: "bug-guile@gnu.org" , 60928@debbugs.gnu.org Received: via spool by submit@debbugs.gnu.org id=B.167411647431442 (code B ref -1); Thu, 19 Jan 2023 08:22:01 +0000 Received: (at submit) by debbugs.gnu.org; 19 Jan 2023 08:21:14 +0000 Received: from localhost ([127.0.0.1]:42464 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pIQAY-0008At-07 for submit@debbugs.gnu.org; Thu, 19 Jan 2023 03:21:14 -0500 Received: from lists.gnu.org ([209.51.188.17]:46790) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pILM2-0000Fi-HP for submit@debbugs.gnu.org; Wed, 18 Jan 2023 22:12:43 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pILM0-00054e-JL for bug-guile@gnu.org; Wed, 18 Jan 2023 22:12:40 -0500 Received: from out-95.mta0.migadu.com ([2001:41d0:1004:224b::5f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pILLy-0007qy-Hg for bug-guile@gnu.org; Wed, 18 Jan 2023 22:12:40 -0500 References: <20230118071022.29809-1-blake@reproduciblemedia.com> <60817C7A-93F6-4987-8812-C46CF62C9104@sarc.name> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=reproduciblemedia.com; s=key1; t=1674097949; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=OeTfweOgPzQtjzwO6c9vmRhYm0lxOs9RZ5tDBqw9rVw=; b=HNpAD1ZwrgZMtRkd/INhHNP9/maZJS9I6Ob/EH4yTera5248u1Ws3jIygqNOQequ9qTh2s qVALiXbXo7K06uaIC7I1XkU1fhZsEbT9QRkj/t/gwYmKRjRGu0ZQWP4E10clErLmDVWWcG FGeKIS7n1zcrZhI4SOdqP81SXoHyGZM= X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Blake Shaw Date: Thu, 19 Jan 2023 09:41:29 +0700 In-reply-to: <60817C7A-93F6-4987-8812-C46CF62C9104@sarc.name> Message-ID: <7zpmbbgquy.fsf@reproduciblemedia.com> MIME-Version: 1.0 Content-Type: text/plain X-Migadu-Flow: FLOW_OUT Received-SPF: pass client-ip=2001:41d0:1004:224b::5f; envelope-from=blake@reproduciblemedia.com; helo=out-95.mta0.migadu.com 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, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.4 (-) X-Mailman-Approved-At: Thu, 19 Jan 2023 03:20:53 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.4 (--) lloda writes: > It seems this is the same bug as https://bugs.gnu.org/60488 and > https://bugs.gnu.org/58154, at least it doesn't segfault in main > anymore. oh sorry about the false patch then, I had searched my local repo for commits containing the word segfault and didn't find any mention, it seems I had pulled just before it was applied. From unknown Tue Jun 17 01:40:31 2025 X-Loop: help-debbugs@gnu.org Subject: bug#60928: [PATCH] bugfix/make_hash_table: fix segfault when arg< 0 for make-hash-table Resent-From: lloda Original-Sender: "Debbugs-submit" Resent-CC: bug-guile@gnu.org Resent-Date: Thu, 19 Jan 2023 17:20:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 60928 X-GNU-PR-Package: guile X-GNU-PR-Keywords: patch To: Blake Shaw Cc: 60928@debbugs.gnu.org, 60928-done@debbugs.gnu.org X-Debbugs-Original-Cc: "bug-guile@gnu.org" , 60928-done@debbugs.gnu.org Received: via spool by submit@debbugs.gnu.org id=B.167414879011752 (code B ref -1); Thu, 19 Jan 2023 17:20:02 +0000 Received: (at submit) by debbugs.gnu.org; 19 Jan 2023 17:19:50 +0000 Received: from localhost ([127.0.0.1]:44662 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pIYZp-00033U-Ns for submit@debbugs.gnu.org; Thu, 19 Jan 2023 12:19:49 -0500 Received: from lists.gnu.org ([209.51.188.17]:43248) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pIYZn-00033N-Om for submit@debbugs.gnu.org; Thu, 19 Jan 2023 12:19:48 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pIYZn-0004hz-EO for bug-guile@gnu.org; Thu, 19 Jan 2023 12:19:47 -0500 Received: from mta-05-3.privateemail.com ([68.65.122.15]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pIYZl-0005Uw-TK for bug-guile@gnu.org; Thu, 19 Jan 2023 12:19:47 -0500 Received: from mta-05.privateemail.com (localhost [127.0.0.1]) by mta-05.privateemail.com (Postfix) with ESMTP id 04FA51800325; Thu, 19 Jan 2023 12:19:30 -0500 (EST) Received: from [192.168.1.105] (unknown [51.154.167.214]) by mta-05.privateemail.com (Postfix) with ESMTPA id 3888F1800313; Thu, 19 Jan 2023 12:19:27 -0500 (EST) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.120.23.2.7\)) From: lloda In-Reply-To: <7zpmbbgquy.fsf@reproduciblemedia.com> Date: Thu, 19 Jan 2023 18:19:25 +0100 Content-Transfer-Encoding: quoted-printable Message-Id: References: <20230118071022.29809-1-blake@reproduciblemedia.com> <60817C7A-93F6-4987-8812-C46CF62C9104@sarc.name> <7zpmbbgquy.fsf@reproduciblemedia.com> X-Mailer: Apple Mail (2.3608.120.23.2.7) X-Virus-Scanned: ClamAV using ClamSMTP Received-SPF: pass client-ip=68.65.122.15; envelope-from=lloda@sarc.name; helo=MTA-05-3.privateemail.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.3 (-) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) No worries, thanks for the report! I note that there's already an old test for (make-hash-table -1) in = hash.test.=20 Regards Daniel From unknown Tue Jun 17 01:40:31 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Blake Shaw Subject: bug#60928: closed (Re: bug#60928: [PATCH] bugfix/make_hash_table: fix segfault when arg< 0 for make-hash-table) Message-ID: References: <20230118071022.29809-1-blake@reproduciblemedia.com> X-Gnu-PR-Message: they-closed 60928 X-Gnu-PR-Package: guile X-Gnu-PR-Keywords: patch Reply-To: 60928@debbugs.gnu.org Date: Thu, 19 Jan 2023 17:20:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1674148802-11783-1" This is a multi-part message in MIME format... ------------=_1674148802-11783-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #60928: [PATCH] bugfix/make_hash_table: fix segfault when arg< 0 for make-h= ash-table which was filed against the guile package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 60928@debbugs.gnu.org. --=20 60928: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D60928 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1674148802-11783-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 60928-done) by debbugs.gnu.org; 19 Jan 2023 17:19:39 +0000 Received: from localhost ([127.0.0.1]:44659 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pIYZf-000336-Bb for submit@debbugs.gnu.org; Thu, 19 Jan 2023 12:19:39 -0500 Received: from mta-05-3.privateemail.com ([68.65.122.15]:12134) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pIYZd-00032t-Eb for 60928-done@debbugs.gnu.org; Thu, 19 Jan 2023 12:19:37 -0500 Received: from mta-05.privateemail.com (localhost [127.0.0.1]) by mta-05.privateemail.com (Postfix) with ESMTP id 04FA51800325; Thu, 19 Jan 2023 12:19:30 -0500 (EST) Received: from [192.168.1.105] (unknown [51.154.167.214]) by mta-05.privateemail.com (Postfix) with ESMTPA id 3888F1800313; Thu, 19 Jan 2023 12:19:27 -0500 (EST) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.120.23.2.7\)) Subject: Re: bug#60928: [PATCH] bugfix/make_hash_table: fix segfault when arg< 0 for make-hash-table From: lloda In-Reply-To: <7zpmbbgquy.fsf@reproduciblemedia.com> Date: Thu, 19 Jan 2023 18:19:25 +0100 Content-Transfer-Encoding: quoted-printable Message-Id: References: <20230118071022.29809-1-blake@reproduciblemedia.com> <60817C7A-93F6-4987-8812-C46CF62C9104@sarc.name> <7zpmbbgquy.fsf@reproduciblemedia.com> To: Blake Shaw X-Mailer: Apple Mail (2.3608.120.23.2.7) X-Virus-Scanned: ClamAV using ClamSMTP X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 60928-done Cc: "bug-guile@gnu.org" , 60928-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) No worries, thanks for the report! I note that there's already an old test for (make-hash-table -1) in = hash.test.=20 Regards Daniel ------------=_1674148802-11783-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 18 Jan 2023 08:38:09 +0000 Received: from localhost ([127.0.0.1]:39111 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pI3xP-0001yR-Nd for submit@debbugs.gnu.org; Wed, 18 Jan 2023 03:38:09 -0500 Received: from lists.gnu.org ([209.51.188.17]:54778) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pI2bU-00082k-Hy for submit@debbugs.gnu.org; Wed, 18 Jan 2023 02:11:26 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pI2bU-0005DH-Bh for bug-guile@gnu.org; Wed, 18 Jan 2023 02:11:24 -0500 Received: from out2.migadu.com ([188.165.223.204]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pI2bR-000491-Da for bug-guile@gnu.org; Wed, 18 Jan 2023 02:11:24 -0500 X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=reproduciblemedia.com; s=key1; t=1674025873; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=L1d2bWhhtfyAXFwDOMAWDGn8xRvujpqIL6MrQnX7kq0=; b=dhQcDkezj64WBDlKA1k61FVQwH1lJfMP1eTwm61eFpU2mBEj9D84thX110Fz75jfmpTOY+ ZCGOU8aAHorR4PkSfDvV9k0z/zDjXTqHan+O35KAElKMh6Y6MkPTI8v3Fv4euoVYu27O8I i7VP8avmTGVXPv8GEESqWQ51CdXGrT8= From: Blake Shaw To: bug-guile@gnu.org Subject: [PATCH] bugfix/make_hash_table: fix segfault when arg< 0 for make-hash-table Date: Wed, 18 Jan 2023 14:10:22 +0700 Message-Id: <20230118071022.29809-1-blake@reproduciblemedia.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Migadu-Flow: FLOW_OUT Received-SPF: pass client-ip=188.165.223.204; envelope-from=blake@reproduciblemedia.com; helo=out2.migadu.com 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, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.4 (-) X-Debbugs-Envelope-To: submit X-Mailman-Approved-At: Wed, 18 Jan 2023 03:38:06 -0500 Cc: Blake Shaw X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.4 (--) * libguile/hashtab.c (make_hash_table): FIX SEGMENTATION FAULT Currently on Guix if a user evokes (make-hash-table arg) where arg < 0, guile segfaults. This patch adds the most straight forward solution, checking if the value passed to make-hash-table is less than 0, and if so, throwing an error with scm_out_of_range to avoid segfaulting. It builds and passes all tests in a guix shell using the command: $ guix shell automake autoconf make flex gnulib gettext libtool \ gperf gmp git libffi -D guile guix -C -- \ ./autogen.sh && ./configure && make && make check afterwards, using: ./meta/guile -q => scheme@(guile-user)> (make-hash-table -1) ice-9/boot-9.scm:1685:16: In procedure raise-exception: Value out of range 0 to< 18446744073709551615: -1 as desired... I'm not familiar with the inner workings of libguile, but figured I'd offer a fix regardless, so take this this patch with a grain of salt, it was a quicky... --- libguile/hashtab.c | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/libguile/hashtab.c b/libguile/hashtab.c index b4f004c1d..9cb5d7a47 100644 --- a/libguile/hashtab.c +++ b/libguile/hashtab.c @@ -84,23 +84,24 @@ make_hash_table (unsigned long k, const char *func_name) SCM vector; scm_t_hashtable *t; int i = 0, n = k ? k : 31; - while (i + 1 < HASHTABLE_SIZE_N && n > hashtable_size[i]) - ++i; - n = hashtable_size[i]; - - vector = scm_c_make_vector (n, SCM_EOL); - - t = scm_gc_malloc_pointerless (sizeof (*t), s_hashtable); - t->min_size_index = t->size_index = i; - t->n_items = 0; - t->lower = 0; - t->upper = 9 * n / 10; + if (k < i) { + scm_out_of_range (func_name, scm_from_ulong (k)); + } else { + while (i + 1 < HASHTABLE_SIZE_N && n > hashtable_size[i]) + ++i; + n = hashtable_size[i]; + vector = scm_c_make_vector (n, SCM_EOL); + t = scm_gc_malloc_pointerless (sizeof (*t), s_hashtable); + t->min_size_index = t->size_index = i; + t->n_items = 0; + t->lower = 0; + t->upper = 9 * n / 10; /* FIXME: we just need two words of storage, not three */ - return scm_double_cell (scm_tc7_hashtable, SCM_UNPACK (vector), - (scm_t_bits)t, 0); + return scm_double_cell (scm_tc7_hashtable, SCM_UNPACK (vector), + (scm_t_bits)t, 0); + } } - void scm_i_rehash (SCM table, scm_t_hash_fn hash_fn, -- 2.38.1 ------------=_1674148802-11783-1--