On Wed, 27 Nov 2013 18:58:03 -0800
Connor Behan <connor.be...@gmail.com> wrote:

> On 27/11/13 08:25 AM, Joshua Hudson wrote:
> > It is my opinion this patch is incorrect in design.
> >
> > If I were to arrange for the first file to be .bashrc, you would get the 
> > error, but the damage would already be done.
> Good point. The patch prevents the clutter of a tarbomb but it wouldn't
> be able to save this first file.
> > What would be immediately beneficial is a patch that provides option if 
> > given tar -xf filename.tar*, ensuring
> > that all paths begin with filename/, and prepending filename/ if they 
> > don't. Do mkdir filename first for the obvious reason.
> You might be interested in and earlier version of the patch:
> http://lists.gnu.org/archive/html/bug-tar/2013-08/msg00031.html
> 
> Paul said a simpler patch that just causes an error would be preferable
> but so far neither version has been accepted. It all depends on what
> Sergey says if / when he looks at this. I'll post an updated version
> that prepends filename/ and then try to ping the maintainers.
> 

Connor,

prepending the package name (if the directory does not yet exist) would also 
cope with 
archives containing top level "." entries. Such packages are common because 
some developers 
have the habit to create new releases by issuing a command similar to the 
following:

  $ cd ~/package-xyz-1.0  && tar -cf /tmp/package-xyz-1.0.tar .

Now, if you're using a source distribution, such an archive may get 
automatically extracted within
a privileged process. In the particular case I observed some time ago, 
unpacking the sources was 
roughly done like

  # P=package-xyz-1.0 && mkdir -p "/tmp/${P}/work" && tar -C "/tmp/${P}/work" 
-xf "/tmp/${P}.tar"

The next step was to set the access rights *within* the newly created work 
directory. But because 
the tar archive contained 

  drwxr-xr-x 7121/7121         0 2013-11-28 14:12 ./
  -rw-r--r-- 7121/7121         0 2013-11-28 14:12 ./some-file.txt

with the "./" entry denoting the current directory, the newly created work 
directory was 
still owned by the package author, and not by the privileged user who created 
the work directory:

 $ ls -ld /tmp/package-xyz-1.0/work
 drwxr-xr-x 2 7121 7121 4096 28. Nov 14:12 /tmp/package-xyz-1.0/work

While tar behaved correctly here, this certainly was a defect of the 
distribution (Gentoo 
in this case). Yet it can also be seen as unexpected behaviour.


Best regards

Hugo Mildenberger

-- 


Reply via email to