Skip to content

Commit f5c7cb6

Browse files
committed
Add test for archive breakout test for lchmod
Signed-off-by: Derek McGowan <[email protected]> (cherry picked from commit ad81d76219a75559cb9d74a214efe0d779d7cbef) Signed-off-by: Derek McGowan <[email protected]>
1 parent 37a44de commit f5c7cb6

1 file changed

Lines changed: 35 additions & 0 deletions

File tree

archive/tar_test.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,11 @@ func TestBreakouts(t *testing.T) {
243243
return nil
244244
}
245245
errFileDiff := errors.New("files differ")
246+
td, err := ioutil.TempDir("", "test-breakouts-")
247+
if err != nil {
248+
t.Fatal(err)
249+
}
250+
defer os.RemoveAll(td)
246251

247252
isSymlinkFile := func(f string) func(string) error {
248253
return func(root string) error {
@@ -744,6 +749,36 @@ func TestBreakouts(t *testing.T) {
744749
// resolution ends up just removing etc
745750
validator: fileNotExists("etc/passwd"),
746751
},
752+
{
753+
754+
name: "HardlinkSymlinkChmod",
755+
w: func() tartest.WriterToTar {
756+
p := filepath.Join(td, "perm400")
757+
if err := ioutil.WriteFile(p, []byte("..."), 0400); err != nil {
758+
t.Fatal(err)
759+
}
760+
ep := filepath.Join(td, "also-exists-outside-root")
761+
if err := ioutil.WriteFile(ep, []byte("..."), 0640); err != nil {
762+
t.Fatal(err)
763+
}
764+
765+
return tartest.TarAll(
766+
tc.Symlink(p, ep),
767+
tc.Link(ep, "sketchylink"),
768+
)
769+
}(),
770+
validator: func(string) error {
771+
p := filepath.Join(td, "perm400")
772+
fi, err := os.Lstat(p)
773+
if err != nil {
774+
return err
775+
}
776+
if perm := fi.Mode() & os.ModePerm; perm != 0400 {
777+
return errors.Errorf("%s perm changed from 0400 to %04o", p, perm)
778+
}
779+
return nil
780+
},
781+
},
747782
}
748783

749784
for _, bo := range breakouts {

0 commit comments

Comments
 (0)