From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.bugs Subject: bug#12632: file permissions checking mishandled when setuid Date: Mon, 22 Oct 2012 23:04:50 +0200 Message-ID: <838vaycj65.fsf@gnu.org> References: <5078CAB6.7020509@cs.ucla.edu> <83fw5h5yo6.fsf@gnu.org> <507B010F.20105@cs.ucla.edu> <831uh06gqd.fsf@gnu.org> <507B15B0.2040802@cs.ucla.edu> <83txtw4xmk.fsf@gnu.org> <507B2354.3030408@cs.ucla.edu> <83sj9g4vy7.fsf@gnu.org> <507BAA6C.2000601@cs.ucla.edu> <83lif74p78.fsf@gnu.org> <507C823D.40304@cs.ucla.edu> <83d30j3wqg.fsf@gnu.org> <507CF802.6000305@cs.ucla.edu> <83a9vm4bmv.fsf@gnu.org> <50818763.80501@cs.ucla.edu> <83wqymz4me.fsf@gnu.org> <5081A1DF.9000009@cs.ucla.edu> <5081ABD6.9060002@cs.ucla.edu> <23r4osd2f9.fsf@fencepost.gnu.org> <50836366.6080600@cs.ucla.edu> <5084E1B2.2020105@cs.ucla.edu> <83ipa2ctl2.fsf@gnu.org> <5085AD9E.7040701@cs.ucla.edu> Reply-To: Eli Zaretskii NNTP-Posting-Host: plane.gmane.org X-Trace: ger.gmane.org 1350939924 12374 80.91.229.3 (22 Oct 2012 21:05:24 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 22 Oct 2012 21:05:24 +0000 (UTC) Cc: 12632@debbugs.gnu.org To: Paul Eggert Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon Oct 22 23:05:32 2012 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1TQPBi-0003vk-Ji for geb-bug-gnu-emacs@m.gmane.org; Mon, 22 Oct 2012 23:05:30 +0200 Original-Received: from localhost ([::1]:47646 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TQPBa-0000ir-WA for geb-bug-gnu-emacs@m.gmane.org; Mon, 22 Oct 2012 17:05:22 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:50300) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TQPBW-0000ia-QD for bug-gnu-emacs@gnu.org; Mon, 22 Oct 2012 17:05:20 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TQPBS-0000J2-KW for bug-gnu-emacs@gnu.org; Mon, 22 Oct 2012 17:05:17 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:46075) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TQPBS-0000Il-Gm for bug-gnu-emacs@gnu.org; Mon, 22 Oct 2012 17:05:14 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1TQPDB-0006OJ-Qu for bug-gnu-emacs@gnu.org; Mon, 22 Oct 2012 17:07:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Eli Zaretskii Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 22 Oct 2012 21:07:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 12632 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: security patch Original-Received: via spool by 12632-submit@debbugs.gnu.org id=B12632.135094001224544 (code B ref 12632); Mon, 22 Oct 2012 21:07:01 +0000 Original-Received: (at 12632) by debbugs.gnu.org; 22 Oct 2012 21:06:52 +0000 Original-Received: from localhost ([127.0.0.1]:56326 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TQPD2-0006No-AN for submit@debbugs.gnu.org; Mon, 22 Oct 2012 17:06:52 -0400 Original-Received: from mtaout21.012.net.il ([80.179.55.169]:64902) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TQPCy-0006NS-TA for 12632@debbugs.gnu.org; Mon, 22 Oct 2012 17:06:50 -0400 Original-Received: from conversion-daemon.a-mtaout21.012.net.il by a-mtaout21.012.net.il (HyperSendmail v2007.08) id <0MCB00L00BW0XT00@a-mtaout21.012.net.il> for 12632@debbugs.gnu.org; Mon, 22 Oct 2012 23:04:54 +0200 (IST) Original-Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout21.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0MCB00L03BW5P980@a-mtaout21.012.net.il>; Mon, 22 Oct 2012 23:04:54 +0200 (IST) In-reply-to: <5085AD9E.7040701@cs.ucla.edu> X-012-Sender: halo1@inter.net.il X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 140.186.70.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-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:65877 Archived-At: > Date: Mon, 22 Oct 2012 13:33:34 -0700 > From: Paul Eggert > CC: rgm@gnu.org, 12632@debbugs.gnu.org > > >> + /* Normally a file F is an accessible directory if F/. is accessible. > >> + But omit the "/." if F is empty, as "" is not "/."; and omit the > >> + "/" if F ends in "/", as on some platforms "/" != "//". */ > >> + if (len) > >> + { > >> + char *buf = SAFE_ALLOCA (len + 3); > >> + memcpy (buf, file, len); > >> + strcpy (buf + len, "/." + (file[len - 1] == '/')); > >> + file = buf; > >> + } > > > > I think this should use IS_DIRECTORY_SEP instead of a literal '/'. > > It should work as-is, no? It's true that on Windows, backslash is > also a directory separator. But I don't see any harm done if we append > '/.' to a file name that ends in backslash. I meant the test (file[len - 1] == '/'). > For example, if the file name is 'FOO\' and we append '/.' to make > it 'FOO\/.', the test should succeed if FOO is a searchable > directory It doesn't necessarily succeed. Windows file APIs are picky wrt trailing slashes. And the result is ugly, and the code looks wrong. We use IS_DIRECTORY_SEP in other places, so why avoid it here? > Another way to put it is that the test against trailing slash is only > for the benefit of platforms where '/' != '//', and Windows is not > such a platform. Yes, Windows _is_ such a platform, "//foo/bar" and "/foo/bar" are very different things there.