On Fri, Jun 08, 2018 at 10:54:47AM +0100, Colin Watson wrote:
> Control: tag -1 fixed-upstream
> 
> On Thu, Jun 07, 2018 at 04:41:00PM -0700, Josh Triplett wrote:
> > man(1) documents:
> > > A formatting pipeline is formed from the filters and the primary
> > > formatter (nroff or [tg]roff with -t) and executed. Alternatively, if
> > > an executable program mandb_nfmt (or mandb_tfmt with -t) exists in the
> > > man tree root, it is executed instead. It gets passed the manual
> > > source file, the preprocessor string, and optionally the device
> > > specified with -T or -E as arguments.
> > 
> > However, careful checking of strace shows that man looks for mandb_nfmt
> > in the current directory, not in /usr/share/man. *Fortunately*, if
> > found, it then attempts to *execute* "cd /usr/share/man && ./mandb_nfmt
> > ...", so this doesn't appear to open a security hole. Still, this does
> > seem like a bug.
> 
> Thanks.  Indeed it is.  I introduced it in 2.8.3 during a refactoring.
> Fixed now:
> 
>   
> https://git.savannah.gnu.org/cgit/man-db.git/commit/?id=1bab0c3a5d9727c12903055a88825ea6d3e2c361

Thanks!

> > While investigating this, I also found that something in the man
> > pipeline appears to look for a file named "-" in the current directory.
> > Try "touch ./-" , then run "man man" under strace -f and look for a stat
> > of "-" in the trace.
> 
> This is a bug in less.  Can you file it there separately?  You can
> reproduce it like this:
> 
>   echo | strace -otrace less
>   fgrep '"-"' trace

Filed, thank you.

Reply via email to