From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Philipp Stephani Newsgroups: gmane.emacs.bugs Subject: bug#27871: [PATCH] Treat unreachable current directory as error Date: Sat, 30 Sep 2017 20:50:06 +0200 Message-ID: <20170930185006.54096-1-phst__23196.6883097359$1506797472$gmane$org@google.com> References: NNTP-Posting-Host: blaine.gmane.org X-Trace: blaine.gmane.org 1506797472 27676 195.159.176.226 (30 Sep 2017 18:51:12 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sat, 30 Sep 2017 18:51:12 +0000 (UTC) Cc: Philipp Stephani To: emacs-devel@gnu.org, 27871@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Sep 30 20:51:08 2017 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dyMqy-0006lA-8n for geb-bug-gnu-emacs@m.gmane.org; Sat, 30 Sep 2017 20:51:08 +0200 Original-Received: from localhost ([::1]:40101 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dyMr5-0006Cd-P4 for geb-bug-gnu-emacs@m.gmane.org; Sat, 30 Sep 2017 14:51:15 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:54776) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dyMqv-0006Ba-0d for bug-gnu-emacs@gnu.org; Sat, 30 Sep 2017 14:51:06 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dyMqs-0000E1-BT for bug-gnu-emacs@gnu.org; Sat, 30 Sep 2017 14:51:05 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:60993) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dyMqs-0000Du-7x for bug-gnu-emacs@gnu.org; Sat, 30 Sep 2017 14:51:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1dyMqs-00054F-20 for bug-gnu-emacs@gnu.org; Sat, 30 Sep 2017 14:51:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Philipp Stephani Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 30 Sep 2017 18:51:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 27871 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 27871-submit@debbugs.gnu.org id=B27871.150679742219420 (code B ref 27871); Sat, 30 Sep 2017 18:51:02 +0000 Original-Received: (at 27871) by debbugs.gnu.org; 30 Sep 2017 18:50:22 +0000 Original-Received: from localhost ([127.0.0.1]:41441 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dyMqD-00053A-Qq for submit@debbugs.gnu.org; Sat, 30 Sep 2017 14:50:22 -0400 Original-Received: from mail-wr0-f173.google.com ([209.85.128.173]:56514) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dyMqB-00052s-ON for 27871@debbugs.gnu.org; Sat, 30 Sep 2017 14:50:20 -0400 Original-Received: by mail-wr0-f173.google.com with SMTP id r74so1487488wrb.13 for <27871@debbugs.gnu.org>; Sat, 30 Sep 2017 11:50:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=zjI5ak+x14ewYeU+e3R3ds15Ql6Zj2BmcBjK9x5umfU=; b=Jj/FafcabMKEuFPBm2jId83x8UvYv4yM0ARBEhZ4WBckcXFz2FMpuXo5goWj92Fgs2 hglLovlNgA9c218MEKvQWXXNOV3yEVIcD4HUkQ64MpXNvEpvxoeR+b9i0EpzX4yHC5dm dZOS8MOWQzcqz/aRGib+T6NfJHNJQrnrmQNk6KdUKK/U3Xnd/xN7raNgwhfkOKHuErCb XY1UFDgJDSQykN3r7839hjt1F4hfYPdySgvXYyEJneF77lip2xmRgVwljQpykXXWew2s gBVlosMKQbpx+CSY4tMOFRLROFDdsAeNIOtlIBX1NLFvKPsoXYX8NpOwx1va0pRaa99T 1AGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=zjI5ak+x14ewYeU+e3R3ds15Ql6Zj2BmcBjK9x5umfU=; b=Ie59bcVFMOWf62Bhsh8rPmuwfdViTXQnFxzClvBgg+ZOCJ5k1/t1Awl48ah3ArGEA5 oRFuAHMVusvPp+70Ep7ZkECS6fzkY29qYGtrBTuKQfc0Q9k55u+1IwjxJYo05wmPxooZ GJqs6Raq1rIy49lH9IT8VLu4z5boBae/Oqao6aSMOC4tCE62jFQBny2truiCoKuOtefl lQLCH+RkpgmLoLJ/fKu2ihgpkMzPSNptuZUeew4dO8efRi3Fiq7t7qJBDn+fq710zSkk rY46T27qGw5RCsMEQe8CJYNUETgcdXlEv0c2ofrIZ41bWgOCFYwRqQ1BtlXkP5m3bziy ZDjg== X-Gm-Message-State: AHPjjUjQVD+ND9YWn8BjzQZ4bMJa0hHaeavNbK986pwnrsRDIRfuXBbk 7xDFh9NtNdI1sZyk5jJqaac= X-Google-Smtp-Source: AOwi7QBAa5ZmgrRJIDwhNwWXBBAv0M2rUc6+BtMGJ+aa6l2O68ppAvHhC6kM4Zrf55e5ER2cNY5Aig== X-Received: by 10.223.163.18 with SMTP id c18mr10740877wrb.211.1506797413977; Sat, 30 Sep 2017 11:50:13 -0700 (PDT) Original-Received: from p.cm.cablesurf.de (46.128.198.151.dynamic.cablesurf.de. [46.128.198.151]) by smtp.gmail.com with ESMTPSA id 6sm6883957wru.33.2017.09.30.11.50.13 (version=TLS1 cipher=AES128-SHA bits=128/128); Sat, 30 Sep 2017 11:50:13 -0700 (PDT) X-Google-Original-From: Philipp Stephani X-Mailer: git-send-email 2.14.1 In-Reply-To: X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:137704 Archived-At: Linux prefixes an unreachable (e.g. unmounted) current directory with the special string "(unreachable)", cf. Bug#27871. Treat such directories as error because they wouldn't work anyway. * src/sysdep.c (emacs_get_current_dir_name_1): Renamed from emacs_get_current_dir_name. (emacs_get_current_dir_name): Check for prefix "(unreachable)". --- src/sysdep.c | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/src/sysdep.c b/src/sysdep.c index 1e6e0d011b..efc0396c93 100644 --- a/src/sysdep.c +++ b/src/sysdep.c @@ -220,10 +220,8 @@ init_standard_fds (void) force_open (STDERR_FILENO, O_RDONLY); } -/* Return the current working directory. The result should be freed - with 'free'. Return NULL on errors. */ -char * -emacs_get_current_dir_name (void) +static char * +emacs_get_current_dir_name_1 (void) { # if HAVE_GET_CURRENT_DIR_NAME && !BROKEN_GET_CURRENT_DIR_NAME # ifdef HYBRID_MALLOC @@ -283,6 +281,27 @@ emacs_get_current_dir_name (void) return buf; } +/* Return the current working directory. The result should be freed + with 'free'. Return NULL on errors. */ +char * +emacs_get_current_dir_name (void) +{ + char *dir = emacs_get_current_dir_name_1 (); + if (dir == NULL) + return NULL; + /* On Linux, getcwd and get_current_dir_name return a string + starting with "(unreachable)" if the current directory doesn't + exist, e.g. because it was unmounted. Treat that as an error. + See https://debbugs.gnu.org/cgi/bugreport.cgi?bug=27871. */ + if (!file_name_absolute_p (dir)) + { + free (dir); + errno = ENOTCONN; + return NULL; + } + return dir; +} + /* Discard pending input on all input descriptors. */ -- 2.14.1