Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP2:GA
containerd.20447
bsc1188282-use-chmod-path-for-checking-symlink....
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File bsc1188282-use-chmod-path-for-checking-symlink.patch of Package containerd.20447
From 45e9ebe3c91b258ad7489baaea3a1f6e0b42ceb4 Mon Sep 17 00:00:00 2001 From: Derek McGowan <derek@mcg.dev> Date: Tue, 6 Jul 2021 12:37:54 -0700 Subject: [PATCH] [release/1.4] Use chmod path for checking symlink Signed-off-by: Derek McGowan <derek@mcg.dev> --- archive/tar_test.go | 35 +++++++++++++++++++++++++++++++++++ archive/tar_unix.go | 2 +- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/archive/tar_test.go b/archive/tar_test.go index 568f5a95f..8ffd3f221 100644 --- a/archive/tar_test.go +++ b/archive/tar_test.go @@ -243,6 +243,11 @@ func TestBreakouts(t *testing.T) { return nil } errFileDiff := errors.New("files differ") + td, err := ioutil.TempDir("", "test-breakouts-") + if err != nil { + t.Fatal(err) + } + defer os.RemoveAll(td) isSymlinkFile := func(f string) func(string) error { return func(root string) error { @@ -744,6 +749,36 @@ func TestBreakouts(t *testing.T) { // resolution ends up just removing etc validator: fileNotExists("etc/passwd"), }, + { + + name: "HardlinkSymlinkChmod", + w: func() tartest.WriterToTar { + p := filepath.Join(td, "perm400") + if err := ioutil.WriteFile(p, []byte("..."), 0400); err != nil { + t.Fatal(err) + } + ep := filepath.Join(td, "also-exists-outside-root") + if err := ioutil.WriteFile(ep, []byte("..."), 0640); err != nil { + t.Fatal(err) + } + + return tartest.TarAll( + tc.Symlink(p, ep), + tc.Link(ep, "sketchylink"), + ) + }(), + validator: func(string) error { + p := filepath.Join(td, "perm400") + fi, err := os.Lstat(p) + if err != nil { + return err + } + if perm := fi.Mode() & os.ModePerm; perm != 0400 { + return errors.Errorf("%s perm changed from 0400 to %04o", p, perm) + } + return nil + }, + }, } for _, bo := range breakouts { diff --git a/archive/tar_unix.go b/archive/tar_unix.go index 6e89d2fdb..c22e79bf2 100644 --- a/archive/tar_unix.go +++ b/archive/tar_unix.go @@ -113,7 +113,7 @@ func handleTarTypeBlockCharFifo(hdr *tar.Header, path string) error { func handleLChmod(hdr *tar.Header, path string, hdrInfo os.FileInfo) error { if hdr.Typeflag == tar.TypeLink { - if fi, err := os.Lstat(hdr.Linkname); err == nil && (fi.Mode()&os.ModeSymlink == 0) { + if fi, err := os.Lstat(path); err == nil && (fi.Mode()&os.ModeSymlink == 0) { if err := os.Chmod(path, hdrInfo.Mode()); err != nil && !os.IsNotExist(err) { return err } -- 2.32.0
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor