Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 14 Oct 2000 15:22:45 +0200
From:      Gerhard Sittig <Gerhard.Sittig@gmx.net>
To:        FreeBSD-gnats-submit@freebsd.org
Subject:   docs/21990: exec(3) manpage vs source inconsistency
Message-ID:  <20001014152245.M25237@speedy.gsinet>

next in thread | raw e-mail | index | archive | help

>Number:         21990
>Category:       docs
>Synopsis:       exec(3) manpage vs source inconsistency
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-doc
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          doc-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sat Oct 14 10:00:01 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator:     Gerhard Sittig
>Release:        FreeBSD 4.1-STABLE i386
>Organization:
in private
>Environment:

Seen this in a manpage on a FreeBSD 4-STABLE system as well as
verified that it is in the -CURRENT sources.

>Description:

The exec(3) manpage states that the exec?p functions fall back to
a search path of "/bin:/usr/bin:" in the absense of a "/" in
argv[0] as well as a "PATH" variable.  This is quite a difference
from the "/bin:/usr/bin" path that actually applies.

>How-To-Repeat:

~/FreeBSD-source $ find \
src-current/lib/libc src-current/include \
src-stable/lib/libc src-stable/include \
-type f -print0 | xargs -0 grep -w _PATH_DEFPATH /dev/null
src-current/lib/libc/gen/exec.c:                path = _PATH_DEFPATH;
src-current/include/paths.h:#define     _PATH_DEFPATH   "/usr/bin:/bin"
src-stable/lib/libc/gen/exec.c:         path = _PATH_DEFPATH;
src-stable/include/paths.h:#define      _PATH_DEFPATH   "/usr/bin:/bin"

man 3 execvp (on a -STABLE machine)
-----------------------------------------------------------------
...
The functions execlp() and execvp() will duplicate the actions of the
shell in searching for an executable file if the specified file name does
not contain a slash ``/'' character.  The search path is the path speci-
fied in the environment by ``PATH'' variable.  If this variable isn't
specified, the default path ``/bin:/usr/bin:'' is used.  In addition,
certain errors are treated specially.
...
-----------------------------------------------------------------

>Fix:

Not sure about it due to further reading in the manpage:
-----------------------------------------------------------------
...
COMPATIBILITY
     Historically, the default path for the execlp() and execvp() functions
     was ``:/bin:/usr/bin''. This was changed to place the current directory
     last to enhance system security.
...
-----------------------------------------------------------------

Either the source or the doc is wrong in this respect.  As I'm
not sure, there's no patch to be included here.  Although I like
the current behaviour very much to *not* include the current
directory when not explicitely specified in the PATH variable
(and those who do get what they deserve ...).  So I feel the
manpage to be behind the established situation.  Please don't
tell me the source is. :)


virtually yours   82D1 9B9C 01DC 4FB4 D7B4  61BE 3F49 4F77 72DE DA76
Gerhard Sittig   true | mail -s "get gpg key" Gerhard.Sittig@gmx.net
-- 
     If you don't understand or are scared by any of the above
             ask your parents or an adult to help you.

>Release-Note:
>Audit-Trail:
>Unformatted:


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-doc" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20001014152245.M25237>