delorie.com/archives/browse.cgi | search |
X-Recipient: | archive-cygwin AT delorie DOT com |
DomainKey-Signature: | a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id |
:list-unsubscribe:list-subscribe:list-archive:list-post | |
:list-help:sender:date:from:to:subject:message-id:reply-to | |
:references:mime-version:content-type:in-reply-to; q=dns; s= | |
default; b=aPAxCV1m7ZQO3UJY34GZdMYnvLeYESscpjgC/XTqSk0o69jbO8Tu3 | |
UptrWedhXU7yNMZltsDMFipBABhnxWKFiByT2V+Z3p4GtRRq18E3wHYrkrR5H7u9 | |
uLy3RbIr34T65pbbCBQUD7wq/j4CmhmV3rt9FWRrh/k+DL6kKj2b3w= | |
DKIM-Signature: | v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id |
:list-unsubscribe:list-subscribe:list-archive:list-post | |
:list-help:sender:date:from:to:subject:message-id:reply-to | |
:references:mime-version:content-type:in-reply-to; s=default; | |
bh=Qun52tqA7FkYrAY7GtE7dX2ekLY=; b=I0a7GEnKpVmZRwCKcrdtE2KU/bmv | |
CrUhUYdCckiRm1dKRWIme7DW+H9ASTfp5ELvJd4T1kM7Nj1eunoJBruuVDP5Ex33 | |
mpTRJK2FrW+HbslMJ3rdvVvxliwHd2JYSev8XeBZisOAm6l9LhwVxkkaNzr58SQ1 | |
rCdXHQWUGivY74I= | |
Mailing-List: | contact cygwin-help AT cygwin DOT com; run by ezmlm |
List-Id: | <cygwin.cygwin.com> |
List-Subscribe: | <mailto:cygwin-subscribe AT cygwin DOT com> |
List-Archive: | <http://sourceware.org/ml/cygwin/> |
List-Post: | <mailto:cygwin AT cygwin DOT com> |
List-Help: | <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs> |
Sender: | cygwin-owner AT cygwin DOT com |
Mail-Followup-To: | cygwin AT cygwin DOT com |
Delivered-To: | mailing list cygwin AT cygwin DOT com |
Authentication-Results: | sourceware.org; auth=none |
X-Spam-SWARE-Status: | No, score=-104.2 required=5.0 tests=AWL,BAYES_00,GOOD_FROM_CORINNA_CYGWIN,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 spammy=H*F:D*cygwin.com |
X-HELO: | mout.kundenserver.de |
Date: | Tue, 6 Aug 2019 10:33:00 +0200 |
From: | Corinna Vinschen <corinna-cygwin AT cygwin DOT com> |
To: | cygwin AT cygwin DOT com |
Subject: | Re: Empty file without "x" permission is successfully executable on Cygwin |
Message-ID: | <20190806083300.GM11632@calimero.vinschen.de> |
Reply-To: | cygwin AT cygwin DOT com |
Mail-Followup-To: | cygwin AT cygwin DOT com |
References: | <BL0PR0901MB43081893EE588BDED05886BFA5DA0 AT BL0PR0901MB4308 DOT namprd09 DOT prod DOT outlook DOT com> <eeb8deb6-fc17-1ecd-fb9d-6c0882f75dc1 AT cornell DOT edu> <7d007c9f-e98d-f497-d706-dbf94bb563f2 AT towo DOT net> <319f78d5-fbcd-712a-ba27-137bd1fbd439 AT cornell DOT edu> <8378710e-4533-ee50-0e31-7714982eec0d AT cornell DOT edu> |
MIME-Version: | 1.0 |
In-Reply-To: | <8378710e-4533-ee50-0e31-7714982eec0d@cornell.edu> |
User-Agent: | Mutt/1.11.3 (2019-02-01) |
--F+wU6CH2q8RBGewX Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Aug 6 03:19, Ken Brown wrote: > On 8/5/2019 4:39 PM, Ken Brown wrote: > > On 8/5/2019 4:19 PM, Thomas Wolff wrote: > >> > >> Am 05.08.2019 um 22:01 schrieb Ken Brown: > >>> On 8/5/2019 2:18 PM, Lavrentiev, Anton (NIH/NLM/NCBI) [C] via cygwin = wrote: > >>>> Hi, > >>>> > >>>> Please consider the following shell session: > >>>> > >>>> $ cat dummy.c > >>>> #include <stdio.h> > >>>> > >>>> int main() > >>>> { > >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return 0; > >>>> } > >>>> $ gcc -o dummy dummy.c > >>>> $ mv dummy.exe dummy > >>>> $ ./dummy > >>>> $ echo $? > >>>> 0 > >>>> $ chmod a-x dummy > >>>> $ ./dummy > >>>> -bash: ./dummy: Permission denied > >>>> $ rm dummy > >>>> $ touch dummy > >>>> $ ./dummy > >>>> $ echo $? > >>>> 0 > >>>> > >>>> So Cygwin lets the shell to execute a zero-sized file regardless of = the "x" perm > >>>> (non-empty files are not executable if they do not have "x", as show= n above). > >>> I can't reproduce this on my system.=C2=A0 Can you show the permissio= ns and ACL of > >>> dummy? > >>> > >>>> There's more.=C2=A0 If I put some rubbish in a file, Cygwin still tr= ies to execute > >>>> it even if the "x" is not there: > >>>> > >>>> $ rm dummy > >>>> $ echo "1" > dummy > >>>> $ ./dummy > >>>> ./dummy: line 1: 1: command not found > >>> Again I can't reproduce this. > >> I reproduce the behaviour: > >> > echo echo foo > bar > >> > ls -l bar > >> -rw-r--r-- 1 towo None 9=C2=A0 5. Aug 22:18 bar > >> > ./bar > >> foo > >=20 > > You're right. I was careless in my test. Sorry for the noise. >=20 > It look like what's happening is that bash calls execve(), which returns = with=20 > errno ENOEXEC instead of EACCES. >=20 > I'll look at this more tomorrow unless someone beats me to it. Looks like the checks for this scenario are in the wrong order. In av::setup(), the first check is if the file is a valid executable and if so, exec returns ENOEXEC (unless called via exec[vl]p). Only if that fails, av::setup checks the executability of the file(*). Ken, I'll propose a patch on cygwin-patches, please check. Thanks, Corinna (*) Note that the executability test only makes sense on filesystems supporting execute bits. On FAT filesystems, no such check will take place and Cygwin will not encounter EACCES scenarios. --=20 Corinna Vinschen Cygwin Maintainer --F+wU6CH2q8RBGewX Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEoVYPmneWZnwT6kwF9TYGna5ET6AFAl1JOzwACgkQ9TYGna5E T6C16w/+OU1wA8SRRLW7L0aw3YKwRQu3N1nATbRJRNwIrWGnkUloJLXZVxzEDXwR NnaXm7PC94WOds35UjJu4D+ufzcfBmeI5lRUe37i+KyxIF7cTex77bmp+SJhEYjS XJx58NGrmEqQACbhjWEzgN0Nmw3sB2dHQoYZt1cLx1j+EkX7mFooZvhbSI94RMrp VqxGi9Bo6N8RVPs93JUGdC2WKW/nRwuqLxwf/gqShx7hkvmEdtbJLeyjzOBm/OQB PrtqHHpp2gpgNTeBHqFYn1nl5YDLaGaKQWLrC/Wrx1gDgpAmFGraqWhDLw8gBURO JaBzTIH/cT7zJRfbkWZWd4aKgJv9HJP3L7OzE8STWzvWbUUPIaiPxcf7sLkDCYWf L8GRKb/17wXN+dS0cmfGo8d5H2rUhd4fQZPt7E9Ghz4nAcro79tTZGyMCoalWDZp YlLeTWDfem3GV3Y0d2l35+0K458nZWYe735CL1ZVuk3teW765wvgdEQpJ8lFBSM6 LThJb+Pc2kn3C7Km6tv//4pdb6c/gDjgEvZL4rcCGv7wV3VDaw4iA0Ch/6LVoOB3 4N7XUDLyrvriuVNPKbMgMB6i2+ATflW/5cEoPjLqPkswfkODilr415B3G1dkpVb7 w3gT25La52VgjVlT4aP43P6sOgQG0Z77KaPyvtwRmGKbrkPLZX4= =gcw+ -----END PGP SIGNATURE----- --F+wU6CH2q8RBGewX--
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |