linux-man.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [Bug 74481] New: It should be documented that using fexecve on a file opened in O_CLOEXEC that is a script cannot possibly work.
@ 2014-04-20  2:36 bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r
       [not found] ` <bug-74481-11311-3bo0kxnWaOQUvHkbgXJLS5sdmw4N0Rt+2LY78lusg7I@public.gmane.org/>
  0 siblings, 1 reply; 4+ messages in thread
From: bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r @ 2014-04-20  2:36 UTC (permalink / raw)
  To: linux-man-u79uwXL29TY76Z2rM5mHXA

https://bugzilla.kernel.org/show_bug.cgi?id=74481

            Bug ID: 74481
           Summary: It should be documented that using fexecve on a file
                    opened in O_CLOEXEC that is a script cannot possibly
                    work.
           Product: Documentation
           Version: unspecified
          Hardware: All
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P1
         Component: man-pages
          Assignee: documentation_man-pages-ztI5WcYan/vQLgFONoPN62D2FQJk+8+b@public.gmane.org
          Reporter: sstewartgallus00-QKvm5KDIoDa7M0a00MdBSQ@public.gmane.org
        Regression: No

Consider the following program:

#include <errno.h>
#include <fcntl.h>
#include <unistd.h>

int main()
{
    int test = open("./test.sh", O_RDONLY | O_CLOEXEC);
    if (-1 == test) {
        perror("open");
    }

    char * const argv[] = {
        (char *) "./test.sh",
        NULL
    };
    char * const env[] = { NULL };
    fexecve(test, argv, env);
    perror("fexecve");

    return 0;
}

and the following script:

#! /usr/bin/env dash

echo 'hello world!'

When the C program is run, it cannot work because by the time the interpreter
has the passed in file name "/proc/self/fd/${FD}" it has already been closed.
This is a strange corner case that should be documented.

-- 
You are receiving this mail because:
You are watching the assignee of the bug.
--
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Bug 74481] New: It should be documented that using fexecve on a file opened in O_CLOEXEC that is a script cannot possibly work.
       [not found] ` <bug-74481-11311-3bo0kxnWaOQUvHkbgXJLS5sdmw4N0Rt+2LY78lusg7I@public.gmane.org/>
@ 2014-04-20  5:14   ` Michael Kerrisk (man-pages)
  2014-04-20  5:55   ` [Bug 74481] " bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r
  2014-04-20  8:26   ` bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r
  2 siblings, 0 replies; 4+ messages in thread
From: Michael Kerrisk (man-pages) @ 2014-04-20  5:14 UTC (permalink / raw)
  To: bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r,
	linux-man-u79uwXL29TY76Z2rM5mHXA
  Cc: mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w

On 04/20/2014 04:36 AM, bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r@public.gmane.org wrote:
> https://bugzilla.kernel.org/show_bug.cgi?id=74481
> 
>             Bug ID: 74481
>            Summary: It should be documented that using fexecve on a file
>                     opened in O_CLOEXEC that is a script cannot possibly
>                     work.
>            Product: Documentation
>            Version: unspecified
>           Hardware: All
>                 OS: Linux
>             Status: NEW
>           Severity: normal
>           Priority: P1
>          Component: man-pages
>           Assignee: documentation_man-pages-ztI5WcYan/vQLgFONoPN62D2FQJk+8+b@public.gmane.org
>           Reporter: sstewartgallus00-QKvm5KDIoDa7M0a00MdBSQ@public.gmane.org
>         Regression: No
> 
> Consider the following program:
> 
> #include <errno.h>
> #include <fcntl.h>
> #include <unistd.h>
> 
> int main()
> {
>     int test = open("./test.sh", O_RDONLY | O_CLOEXEC);
>     if (-1 == test) {
>         perror("open");
>     }
> 
>     char * const argv[] = {
>         (char *) "./test.sh",
>         NULL
>     };
>     char * const env[] = { NULL };
>     fexecve(test, argv, env);
>     perror("fexecve");
> 
>     return 0;
> }
> 
> and the following script:
> 
> #! /usr/bin/env dash
> 
> echo 'hello world!'
> 
> When the C program is run, it cannot work because by the time the interpreter
> has the passed in file name "/proc/self/fd/${FD}" it has already been closed.
> This is a strange corner case that should be documented.

Agreed. I added the text below, under NOTES.

Thanks for the report, Steven.

Cheers,

Michael

If
.I fd
is a file descriptor that refers to an interpreter script
and has been marked as close-on-exec (see the discussion of the
.BR FD_CLOEXEC
in
.BR fcntl (2)),
.BR fexecve ()
will fail to execute the script, since,
by the time the script interpreter tries to access the script file,
.I fd
has already been closed.



-- 
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Linux/UNIX System Programming Training: http://man7.org/training/
--
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug 74481] It should be documented that using fexecve on a file opened in O_CLOEXEC that is a script cannot possibly work.
       [not found] ` <bug-74481-11311-3bo0kxnWaOQUvHkbgXJLS5sdmw4N0Rt+2LY78lusg7I@public.gmane.org/>
  2014-04-20  5:14   ` Michael Kerrisk (man-pages)
@ 2014-04-20  5:55   ` bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r
  2014-04-20  8:26   ` bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r
  2 siblings, 0 replies; 4+ messages in thread
From: bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r @ 2014-04-20  5:55 UTC (permalink / raw)
  To: linux-man-u79uwXL29TY76Z2rM5mHXA

https://bugzilla.kernel.org/show_bug.cgi?id=74481

--- Comment #1 from Michael Kerrisk <mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> ---
On 04/20/2014 04:36 AM, bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r@public.gmane.org wrote:
> https://bugzilla.kernel.org/show_bug.cgi?id=74481
> 
>             Bug ID: 74481
>            Summary: It should be documented that using fexecve on a file
>                     opened in O_CLOEXEC that is a script cannot possibly
>                     work.
>            Product: Documentation
>            Version: unspecified
>           Hardware: All
>                 OS: Linux
>             Status: NEW
>           Severity: normal
>           Priority: P1
>          Component: man-pages
>           Assignee: documentation_man-pages-ztI5WcYan/vQLgFONoPN62D2FQJk+8+b@public.gmane.org
>           Reporter: sstewartgallus00-QKvm5KDIoDa7M0a00MdBSQ@public.gmane.org
>         Regression: No
> 
> Consider the following program:
> 
> #include <errno.h>
> #include <fcntl.h>
> #include <unistd.h>
> 
> int main()
> {
>     int test = open("./test.sh", O_RDONLY | O_CLOEXEC);
>     if (-1 == test) {
>         perror("open");
>     }
> 
>     char * const argv[] = {
>         (char *) "./test.sh",
>         NULL
>     };
>     char * const env[] = { NULL };
>     fexecve(test, argv, env);
>     perror("fexecve");
> 
>     return 0;
> }
> 
> and the following script:
> 
> #! /usr/bin/env dash
> 
> echo 'hello world!'
> 
> When the C program is run, it cannot work because by the time the interpreter
> has the passed in file name "/proc/self/fd/${FD}" it has already been closed.
> This is a strange corner case that should be documented.

Agreed. I added the text below, under NOTES.

Thanks for the report, Steven.

Cheers,

Michael

If
.I fd
is a file descriptor that refers to an interpreter script
and has been marked as close-on-exec (see the discussion of the
.BR FD_CLOEXEC
in
.BR fcntl (2)),
.BR fexecve ()
will fail to execute the script, since,
by the time the script interpreter tries to access the script file,
.I fd
has already been closed.

-- 
You are receiving this mail because:
You are watching the assignee of the bug.
--
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug 74481] It should be documented that using fexecve on a file opened in O_CLOEXEC that is a script cannot possibly work.
       [not found] ` <bug-74481-11311-3bo0kxnWaOQUvHkbgXJLS5sdmw4N0Rt+2LY78lusg7I@public.gmane.org/>
  2014-04-20  5:14   ` Michael Kerrisk (man-pages)
  2014-04-20  5:55   ` [Bug 74481] " bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r
@ 2014-04-20  8:26   ` bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r
  2 siblings, 0 replies; 4+ messages in thread
From: bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r @ 2014-04-20  8:26 UTC (permalink / raw)
  To: linux-man-u79uwXL29TY76Z2rM5mHXA

https://bugzilla.kernel.org/show_bug.cgi?id=74481

Michael Kerrisk <mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
         Resolution|---                         |CODE_FIX

-- 
You are receiving this mail because:
You are watching the assignee of the bug.
--
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2014-04-20  8:26 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-04-20  2:36 [Bug 74481] New: It should be documented that using fexecve on a file opened in O_CLOEXEC that is a script cannot possibly work bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r
     [not found] ` <bug-74481-11311-3bo0kxnWaOQUvHkbgXJLS5sdmw4N0Rt+2LY78lusg7I@public.gmane.org/>
2014-04-20  5:14   ` Michael Kerrisk (man-pages)
2014-04-20  5:55   ` [Bug 74481] " bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r
2014-04-20  8:26   ` bugzilla-daemon-590EEB7GvNiWaY/ihj7yzEB+6BGkLq7r

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).