Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 13 Apr 2013 22:01:52 +0200
From:      Michael Gmelin <freebsd@grem.de>
To:        freebsd-ports@freebsd.org
Cc:        Baptiste Daroussin <bapt@freebsd.org>, Chris Rees <utisoft@gmail.com>
Subject:   Re: www/nginx pkg-plist + pkgng (detectable?)
Message-ID:  <20130413220152.51ef2cb3@bsd64.grem.de>
In-Reply-To: <20130410135632.0971caef@bsd64.grem.de>
References:  <20130330034028.0f8cefc8@bsd64.grem.de> <5156C0D9.50909@FreeBSD.org> <20130330142320.38010126@bsd64.grem.de> <20130408103118.67ea695a@bsd64.grem.de> <CADLo838OFhmA6AQNuHPjP=Kfw9Co9vWh3XqxrFkEH-dgb81pzA@mail.gmail.com> <20130409205950.677a6812@bsd64.grem.de> <20130410061331.GA74304@ithaqua.etoilebsd.net> <CADLo839mvnemkWaKz4wbHZChQWSj0%2BtVgBOwTLuW12mGf0Of2g@mail.gmail.com> <20130410135632.0971caef@bsd64.grem.de>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 10 Apr 2013 13:56:32 +0200
Michael Gmelin <freebsd@grem.de> wrote:

> On Wed, 10 Apr 2013 09:02:29 +0100
> Chris Rees <utisoft@gmail.com> wrote:
> 
> > On 10 April 2013 07:13, Baptiste Daroussin <bapt@freebsd.org> wrote:
> > > On Tue, Apr 09, 2013 at 08:59:50PM +0200, Michael Gmelin wrote:
> > >> On Tue, 9 Apr 2013 19:43:15 +0100
> > >> Chris Rees <utisoft@gmail.com> wrote:
> > >>
> > >>
> > >> >
> > >> > No, it's a bug in pkgng; it should respect @cwd.
> > >> >
> > >
> > > No it is not.
> > >
> > > While i agree with pkgng that should repect @cwd (it surely does)
> > >
> > > There is nothing written anywhere that will waranty you that the
> > > @exec line will be parsed in order ro prepend @cwd path to a path
> > > you provide. the only thing doing that is %D.
> > >
> > > A user MUST add %D and have complete path in @exec lines
> > >
> > > In fact in that case it works by chance becauce of how pkg_install
> > > treat plist.
> > 
> > Am I misunderstanding the meaning of "current working directory"?
> > 
> > When mkdir is called, it should create the directory in @cwd.
> > pkg_install's behaviour is correct here, and pkgng's is not.
> > 
> > Chris
> 
> pkg_create(1) says:
> 
> @cwd [directory]
>              Set the internal directory pointer to point to directory.
>              All subsequent *filenames* will be assumed relative to
> this directory. If no directory argument is given, it will set
>              the internal directory pointer to the first prefix value.
>              Note: @cd is also an alias for this command.
> 
> but as far as the package manager is concerned, www/nginx-dist is an
> argument to mkdir in the exec call (@exec mkdir -p -m 755
> www/nginx-dist) and not a filename.
> 
> Also the porters handbook uses %D in all its examples, but offers no
> explicit explanation.
> 
> That said, the way pkg_add is implemented, it changes to directories
> as a side effect of using its PUSHOUT macro in
> usr.sbin/pkg_install/add/extract.c (I only glanced at that, but that
> seems to be the reason why this is happening). So commands get
> executed within `pwd` == @cwd.
> 
> So there is definitely a backwards compatibility problem for the sheer
> reason of that "it worked before". I don't thing pkg should adopt this
> behavior (it seems like a bad idea long term), but it should detect it
> somehow. A simple approach to detect this could be chdiring
> to /var/empty in pkg before executing the call so it will fail in case
> the path used within @exec is relative.
> 
> Cheers,
> Michael
> 

So what now? Is anybody looking into this? Should I open a PR for nginx
and supply a patch that fixes this (theoretically it should be applied
despite the port freeze, since it's a build problem).

Regarding pkgng: Will anybody consider implementing automatic checks to
prevent something like this from happening (e.g. the simplistic
approach I suggested). Even if the files wouldn't be left behind, the
fact that something gets touched in pwd is really bad - as an admin it
should be safe to assume that I can start pkg from any directory
without altering it state (and be it temporarily).

-- 
Michael Gmelin



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