Chet Ramey <chet.ra...@case.edu> wrote, on 14 Apr 2020:
>
> On 4/14/20 10:05 AM, casper....@oracle.com wrote:
> > 
> >> On 4/14/20 9:44 AM, casper....@oracle.com wrote:
> >>> pwd has the -L option:
> >>>
> >>> The following options shall be supported by the implementation:
> >>>
> >>>     -L
> >>>   If the PWD environment variable contains an absolute pathname
> >>>   of the current directory and the pathname does not contain any
> >>>   components that are dot or dot-dot, pwd shall write this
> >>>   pathname to standard output, except that if the PWD environment
> >>>   variable is longer than {PATH_MAX} bytes including the
> >>>   terminating null, it is unspecified whether pwd writes this
> >>>   pathname to standard output or behaves as if the -P option had
> >>>   been specified. Otherwise, the -L option shall behave as the -P
> >>>   option.
> >>>
> >>>
> >>> It mentions "dot-dot" and "dot".
> >>>
> >>> It does seems to allow:
> >>>
> >>>   (cd /; PWD=////////// pwd -L)
> >>>   //////////
> >>> and
> >>>   (cd /home/casper; PWD=/home///////casper  pwd -L)
> >>>   /home///////casper
> >>>
> >>>
> >>> Is this a correct implmentation?
> >>
> >> Does the standard cover this at all? It only mentions PWD being set by `cd'
> >> and initialized by `sh'. If you assign it directly, at least `cd' is
> >> explicitly unspecified, and since `pwd' is only required to "remove
> >> unnecessary slash characters" if -P is supplied, I'd say you've left the
> >> realm of the standard and the implementation can do what it likes.
> > 
> > 
> > So you are saying that it would be fine to squish out the additional 
> > slashed in the output?  (Not doing anything would be fine, too)
> 
> Yes. It's unspecified.

It would also be allowed to write a diagnostic message such as "PWD
tampering by application detected" and exit with non-zero status.

-- 
Geoff Clare <g.cl...@opengroup.org>
The Open Group, Apex Plaza, Forbury Road, Reading, RG1 1AX, England

Reply via email to