mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-11-04 07:49:35 +00:00 
			
		
		
		
	This fixes a race condition in runc/systemd at container creation time opencontainers/runc#1683 Signed-off-by: vikaschoudhary16 <vichoudh@redhat.com>
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Copyright (C) 2017 SUSE LLC. All rights reserved.
 | 
						|
// Use of this source code is governed by a BSD-style
 | 
						|
// license that can be found in the LICENSE file.
 | 
						|
 | 
						|
package securejoin
 | 
						|
 | 
						|
import "os"
 | 
						|
 | 
						|
// In future this should be moved into a separate package, because now there
 | 
						|
// are several projects (umoci and go-mtree) that are using this sort of
 | 
						|
// interface.
 | 
						|
 | 
						|
// VFS is the minimal interface necessary to use SecureJoinVFS. A nil VFS is
 | 
						|
// equivalent to using the standard os.* family of functions. This is mainly
 | 
						|
// used for the purposes of mock testing, but also can be used to otherwise use
 | 
						|
// SecureJoin with VFS-like system.
 | 
						|
type VFS interface {
 | 
						|
	// Lstat returns a FileInfo describing the named file. If the file is a
 | 
						|
	// symbolic link, the returned FileInfo describes the symbolic link. Lstat
 | 
						|
	// makes no attempt to follow the link. These semantics are identical to
 | 
						|
	// os.Lstat.
 | 
						|
	Lstat(name string) (os.FileInfo, error)
 | 
						|
 | 
						|
	// Readlink returns the destination of the named symbolic link. These
 | 
						|
	// semantics are identical to os.Readlink.
 | 
						|
	Readlink(name string) (string, error)
 | 
						|
}
 | 
						|
 | 
						|
// osVFS is the "nil" VFS, in that it just passes everything through to the os
 | 
						|
// module.
 | 
						|
type osVFS struct{}
 | 
						|
 | 
						|
// Lstat returns a FileInfo describing the named file. If the file is a
 | 
						|
// symbolic link, the returned FileInfo describes the symbolic link. Lstat
 | 
						|
// makes no attempt to follow the link. These semantics are identical to
 | 
						|
// os.Lstat.
 | 
						|
func (o osVFS) Lstat(name string) (os.FileInfo, error) { return os.Lstat(name) }
 | 
						|
 | 
						|
// Readlink returns the destination of the named symbolic link. These
 | 
						|
// semantics are identical to os.Readlink.
 | 
						|
func (o osVFS) Readlink(name string) (string, error) { return os.Readlink(name) }
 |