Explorar o código

Fixes 5370 infinite/maxLoopCount loop for relative symlinks

use path.IsAbs() instead of checking if first char is '/'

Docker-DCO-1.1-Signed-off-by: Lajos Papp <lajos.papp@sequenceiq.com> (github: lalyos)
lalyos %!s(int64=11) %!d(string=hai) anos
pai
achega
ad35d522db
Modificáronse 2 ficheiros con 3 adicións e 3 borrados
  1. 1 0
      AUTHORS
  2. 2 3
      pkg/symlink/fs.go

+ 1 - 0
AUTHORS

@@ -189,6 +189,7 @@ Kimbro Staken <kstaken@kstaken.com>
 Kiran Gangadharan <kiran.daredevil@gmail.com>
 Konstantin Pelykh <kpelykh@zettaset.com>
 Kyle Conroy <kyle.j.conroy@gmail.com>
+Lajos Papp <lajos.papp@sequenceiq.com>
 Laurie Voss <github@seldo.com>
 Liang-Chi Hsieh <viirya@gmail.com>
 Lokesh Mandvekar <lsm5@redhat.com>

+ 2 - 3
pkg/symlink/fs.go

@@ -63,10 +63,9 @@ func FollowSymlinkInScope(link, root string) (string, error) {
 					return "", err
 				}
 
-				switch dest[0] {
-				case '/':
+				if path.IsAbs(dest) {
 					prev = filepath.Join(root, dest)
-				case '.':
+				} else {
 					prev, _ = filepath.Abs(prev)
 
 					if prev = filepath.Clean(filepath.Join(filepath.Dir(prev), dest)); len(prev) < len(root) {