This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: Empty file without "x" permission is successfully executable on Cygwin
- From: Ken Brown <kbrown at cornell dot edu>
- To: "cygwin at cygwin dot com" <cygwin at cygwin dot com>
- Date: Tue, 6 Aug 2019 03:19:22 +0000
- Subject: Re: Empty file without "x" permission is successfully executable on Cygwin
- Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cornell.edu; dmarc=pass action=none header.from=cornell.edu; dkim=pass header.d=cornell.edu; arc=none
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xp3VZuQyxQ2uzAcPFXrO0oP2lCgdpUiGmAu6XX7JL+U=; b=Am7wzZLdTspt33d/SlV42zLMwDAXHHvBaXcz063EpYRuSqG7/0V2BShydpcNi5//KLejbjKIX2QOnhrsK8StoLFOMtkEojhsbtzbXfv12oqqA1HeX50qYVCvBwghhgDg8M2XIoiQYh+Bxhv8a5FHybzm8QEdrVDMXyEMOzPY34lLmw+AHT5lFlZE6TWagRe6yf/uUOuIvldqyTsd8OxEeGyJ4CtMZ3ZovoXcVzUUxXWAV2YKVIZwceA39V4o0o4A3Q7cManvca/0uDs7ro6tn/oE5BQAOuUjwVOh90pF3Iziu2dd/UPPUID4wGrhRIi2HE27jf5CcUYKZZnVcn1srw==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VYrZyMgjcr9BUb6JbqaUfJF5KPZrj3/ERrm101GfS+yzajFAC7vVPcKIN9ScQ2KlKpC733Dn0UQCBfShNQTbnGeWYSOcFHCbzT04f/W875K/zSPFU+0IP3LZbz2h8ROL4W+P+q93eL/qQyX2PzOB4GNYr0g0VZz/5KDztUGlCNqFD0eevSdlJ21o2fV1cGr49yTAfYokddGuZiuGUaeN0XjlnDWrn8pBVypDdH1FwGdxToeSm8Q9LnCV8QpNzrY8mUZUZGEHx4nuMyc8wmnQ85x17NODdN3X8O0ncle/taFwrkTWEbLlovRj07St2ajnZigtASozXxyy4nblwN3U/A==
- References: <BL0PR0901MB43081893EE588BDED05886BFA5DA0@BL0PR0901MB4308.namprd09.prod.outlook.com> <eeb8deb6-fc17-1ecd-fb9d-6c0882f75dc1@cornell.edu> <7d007c9f-e98d-f497-d706-dbf94bb563f2@towo.net> <319f78d5-fbcd-712a-ba27-137bd1fbd439@cornell.edu>
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()
>>>> {
>>>> 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 shown above).
>>> I can't reproduce this on my system. Can you show the permissions and ACL of
>>> dummy?
>>>
>>>> There's more. If I put some rubbish in a file, Cygwin still tries 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 5. Aug 22:18 bar
>> > ./bar
>> foo
>
> You're right. I was careless in my test. Sorry for the noise.
It look like what's happening is that bash calls execve(), which returns with
errno ENOEXEC instead of EACCES.
I'll look at this more tomorrow unless someone beats me to it.
Ken