NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

bin/41419: pax doesn't handle hard link meta-information correctly when using mtree inputs

>Number:         41419
>Category:       bin
>Synopsis:       pax doesn't handle hard link meta-information correctly when 
>using mtree inputs
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    bin-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed May 13 01:45:00 +0000 2009
>Originator:     Lloyd Parkes
>Release:        5.0
Must Have Coffee
NetBSD 5.0 NetBSD 5.0 (GENERIC) #0: Sat May  2 
20:44:13 NZST 2009

There is a bug in NetBSD's pax that affect syspkgs. When pax is 
pulling meta information from an mtree file, it gets the file permissions for 
hard links wrong. The mtree specs that we use for sets and syspkgs only have 
complete meta information for the first hard link to a file. For subsequent 
links, pax uses the mtree default meta information, 
instead of the meta information from the first hard link, which is wrong. This 
doesn't show up in the install sets, because the default mtree ownerships are 
set to group:wheel, which happens to be the right value, even though it was 
found the wrong way. syspkgs don't set any default meta information in the 
mtree spec, so pax has to use a default default, which is the meta 
information on the file system.

The result is that we get this

-r-xr-xr-x  1 root     wheel      22018 May 10 13:14 sbin/swapctl
-r-xr-xr-x  2 lloyd    wheel          0 May 10 13:14 sbin/swapon == 

instead of this

-r-xr-xr-x  1 root     wheel      22018 May 10 13:14 ./sbin/swapctl
-r-xr-xr-x  2 root     wheel          0 May 10 13:14 ./sbin/swapon 
== ./sbin/swapctl

Of course, once pax sets the second ownership during file extraction, we lose. 

I guess that means that there are two bugs on our pax. 1) We should store the 
right information in the archive, and 2) we shouldn't update the file's meta 
information when we are creating a hard link to it.

Build syspkgs as an unprivileged user and then run 

  tar tvzf 
RELEASEDIR/MACHINE/binary/syspkgs/base-sysutil-root-  |grep 

And see it report your account name.

None yet. 

Home | Main Index | Thread Index | Old Index