From debbugs-submit-bounces@debbugs.gnu.org Tue Feb 20 21:07:51 2018 Received: (at submit) by debbugs.gnu.org; 21 Feb 2018 02:07:52 +0000 Received: from localhost ([127.0.0.1]:53467 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eoJp1-00053B-OM for submit@debbugs.gnu.org; Tue, 20 Feb 2018 21:07:51 -0500 Received: from eggs.gnu.org ([208.118.235.92]:41663) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eoJp0-00052w-Dw for submit@debbugs.gnu.org; Tue, 20 Feb 2018 21:07:50 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eoJou-0005rp-7x for submit@debbugs.gnu.org; Tue, 20 Feb 2018 21:07:45 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:48659) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eoJou-0005rj-45 for submit@debbugs.gnu.org; Tue, 20 Feb 2018 21:07:44 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60867) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eoJot-000371-74 for bug-gnu-emacs@gnu.org; Tue, 20 Feb 2018 21:07:43 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eoJoq-0005pl-2O for bug-gnu-emacs@gnu.org; Tue, 20 Feb 2018 21:07:43 -0500 Received: from mail.nullprogram.com ([192.241.191.137]:49900) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eoJop-0005o7-Uu for bug-gnu-emacs@gnu.org; Tue, 20 Feb 2018 21:07:40 -0500 Received: from nullprogram.com (localhost [127.0.0.1]) by mail.nullprogram.com (Postfix) with ESMTPS id 9ACF7C1DDD for ; Tue, 20 Feb 2018 21:07:37 -0500 (EST) Date: Tue, 20 Feb 2018 21:07:36 -0500 From: Christopher Wellons To: bug-gnu-emacs@gnu.org Subject: call-process always fails for empty exec-path Message-ID: <20180221020736.GE12719@nullprogram.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline User-Agent: Mutt/1.5.23 (2014-03-12) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: submit 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: -5.0 (-----) The call-process function incorrectly fails for valid absolute paths when exec-path is nil: (let ((exec-path ())) (call-process "/bin/ls")) ;; error: (file-error "Searching for program" ;; "No such file or directory" "/bin/ls") Adding a single element to exec-path fixes the problem, even if that element is nonsense: (let ((exec-path '(t))) (call-process "/bin/ls")) ;; => 0 The bug is in the for loop in openp() (lread.c). The only successful returns are found inside the loop. An empty list results in no loop iterations, which means an absolute path has no chance to return successfully. This bug dates back at least as far as Emacs 24.3. From debbugs-submit-bounces@debbugs.gnu.org Sat Apr 14 15:56:49 2018 Received: (at 30564) by debbugs.gnu.org; 14 Apr 2018 19:56:49 +0000 Received: from localhost ([127.0.0.1]:52752 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f7RI1-00073B-Ls for submit@debbugs.gnu.org; Sat, 14 Apr 2018 15:56:49 -0400 Received: from hermes.netfonds.no ([80.91.224.195]:56664) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f7RHz-00072x-TD for 30564@debbugs.gnu.org; Sat, 14 Apr 2018 15:56:48 -0400 Received: from 46.67.12.60.tmi.telenormobil.no ([46.67.12.60] helo=corrigan) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1f7RHw-0006MA-JP; Sat, 14 Apr 2018 21:56:46 +0200 Received: from larsi by corrigan with local (Exim 4.89) (envelope-from ) id 1f7RHq-0008B4-Hm; Sat, 14 Apr 2018 21:56:38 +0200 From: Lars Ingebrigtsen To: Christopher Wellons Subject: Re: bug#30564: call-process always fails for empty exec-path References: <20180221020736.GE12719@nullprogram.com> Date: Sat, 14 Apr 2018 21:56:38 +0200 In-Reply-To: <20180221020736.GE12719@nullprogram.com> (Christopher Wellons's message of "Tue, 20 Feb 2018 21:07:36 -0500") Message-ID: <87r2nh1s09.fsf@mouse.gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 30564 Cc: 30564@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 (-) Christopher Wellons writes: > The call-process function incorrectly fails for valid absolute paths > when exec-path is nil: > > (let ((exec-path ())) > (call-process "/bin/ls")) > ;; error: (file-error "Searching for program" > ;; "No such file or directory" "/bin/ls") > > Adding a single element to exec-path fixes the problem, even if that > element is nonsense: > > (let ((exec-path '(t))) > (call-process "/bin/ls")) > ;; => 0 > > The bug is in the for loop in openp() (lread.c). The only successful > returns are found inside the loop. An empty list results in no loop > iterations, which means an absolute path has no chance to return > successfully. I've now fixed this by transforming the for loop into a do/while loop. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From debbugs-submit-bounces@debbugs.gnu.org Sat Apr 14 15:56:50 2018 Received: (at control) by debbugs.gnu.org; 14 Apr 2018 19:56:50 +0000 Received: from localhost ([127.0.0.1]:52754 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f7RI1-00073I-Tq for submit@debbugs.gnu.org; Sat, 14 Apr 2018 15:56:50 -0400 Received: from hermes.netfonds.no ([80.91.224.195]:56666) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f7RI0-00072z-Kk for control@debbugs.gnu.org; Sat, 14 Apr 2018 15:56:48 -0400 Received: from 46.67.12.60.tmi.telenormobil.no ([46.67.12.60] helo=corrigan) by hermes.netfonds.no with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1f7RHy-0006Qz-91 for control@debbugs.gnu.org; Sat, 14 Apr 2018 21:56:48 +0200 Received: from larsi by corrigan with local (Exim 4.89) (envelope-from ) id 1f7RHs-0008B7-O5 for control@debbugs.gnu.org; Sat, 14 Apr 2018 21:56:40 +0200 To: control@debbugs.gnu.org From: Lars Ingebrigtsen Subject: control message for bug #30564 Message-Id: Date: Sat, 14 Apr 2018 21:56:40 +0200 X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: control 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 (-) tags 30564 fixed close 30564 From unknown Sat Jun 21 03:29:42 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Sun, 13 May 2018 11:24:05 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator