mirror of
				https://github.com/containers/podman.git
				synced 2025-11-04 08:56:05 +08:00 
			
		
		
		
	Bump github.com/containers/storage from 1.24.3 to 1.24.4
Bumps [github.com/containers/storage](https://github.com/containers/storage) from 1.24.3 to 1.24.4. - [Release notes](https://github.com/containers/storage/releases) - [Changelog](https://github.com/containers/storage/blob/master/docs/containers-storage-changes.md) - [Commits](https://github.com/containers/storage/compare/v1.24.3...v1.24.4) Signed-off-by: dependabot-preview[bot] <support@dependabot.com> Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
This commit is contained in:
		
				
					committed by
					
						
						Daniel J Walsh
					
				
			
			
				
	
			
			
			
						parent
						
							07663f74c4
						
					
				
				
					commit
					057faea5c1
				
			
							
								
								
									
										158
									
								
								vendor/github.com/Microsoft/hcsshim/internal/safefile/safeopen.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										158
									
								
								vendor/github.com/Microsoft/hcsshim/internal/safefile/safeopen.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@ -11,72 +11,11 @@ import (
 | 
			
		||||
	"unsafe"
 | 
			
		||||
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/longpath"
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/winapi"
 | 
			
		||||
 | 
			
		||||
	winio "github.com/Microsoft/go-winio"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
//go:generate go run $GOROOT\src\syscall\mksyscall_windows.go -output zsyscall_windows.go safeopen.go
 | 
			
		||||
 | 
			
		||||
//sys ntCreateFile(handle *uintptr, accessMask uint32, oa *objectAttributes, iosb *ioStatusBlock, allocationSize *uint64, fileAttributes uint32, shareAccess uint32, createDisposition uint32, createOptions uint32, eaBuffer *byte, eaLength uint32) (status uint32) = ntdll.NtCreateFile
 | 
			
		||||
//sys ntSetInformationFile(handle uintptr, iosb *ioStatusBlock, information uintptr, length uint32, class uint32) (status uint32) = ntdll.NtSetInformationFile
 | 
			
		||||
//sys rtlNtStatusToDosError(status uint32) (winerr error) = ntdll.RtlNtStatusToDosErrorNoTeb
 | 
			
		||||
//sys localAlloc(flags uint32, size int) (ptr uintptr) = kernel32.LocalAlloc
 | 
			
		||||
//sys localFree(ptr uintptr) = kernel32.LocalFree
 | 
			
		||||
 | 
			
		||||
type ioStatusBlock struct {
 | 
			
		||||
	Status, Information uintptr
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type objectAttributes struct {
 | 
			
		||||
	Length             uintptr
 | 
			
		||||
	RootDirectory      uintptr
 | 
			
		||||
	ObjectName         uintptr
 | 
			
		||||
	Attributes         uintptr
 | 
			
		||||
	SecurityDescriptor uintptr
 | 
			
		||||
	SecurityQoS        uintptr
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type unicodeString struct {
 | 
			
		||||
	Length        uint16
 | 
			
		||||
	MaximumLength uint16
 | 
			
		||||
	Buffer        uintptr
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type fileLinkInformation struct {
 | 
			
		||||
	ReplaceIfExists bool
 | 
			
		||||
	RootDirectory   uintptr
 | 
			
		||||
	FileNameLength  uint32
 | 
			
		||||
	FileName        [1]uint16
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type fileDispositionInformationEx struct {
 | 
			
		||||
	Flags uintptr
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	_FileLinkInformation          = 11
 | 
			
		||||
	_FileDispositionInformationEx = 64
 | 
			
		||||
 | 
			
		||||
	FILE_READ_ATTRIBUTES  = 0x0080
 | 
			
		||||
	FILE_WRITE_ATTRIBUTES = 0x0100
 | 
			
		||||
	DELETE                = 0x10000
 | 
			
		||||
 | 
			
		||||
	FILE_OPEN   = 1
 | 
			
		||||
	FILE_CREATE = 2
 | 
			
		||||
 | 
			
		||||
	FILE_DIRECTORY_FILE          = 0x00000001
 | 
			
		||||
	FILE_SYNCHRONOUS_IO_NONALERT = 0x00000020
 | 
			
		||||
	FILE_DELETE_ON_CLOSE         = 0x00001000
 | 
			
		||||
	FILE_OPEN_FOR_BACKUP_INTENT  = 0x00004000
 | 
			
		||||
	FILE_OPEN_REPARSE_POINT      = 0x00200000
 | 
			
		||||
 | 
			
		||||
	FILE_DISPOSITION_DELETE = 0x00000001
 | 
			
		||||
 | 
			
		||||
	_OBJ_DONT_REPARSE = 0x1000
 | 
			
		||||
 | 
			
		||||
	_STATUS_REPARSE_POINT_ENCOUNTERED = 0xC000050B
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func OpenRoot(path string) (*os.File, error) {
 | 
			
		||||
	longpath, err := longpath.LongAbs(path)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
@ -85,16 +24,24 @@ func OpenRoot(path string) (*os.File, error) {
 | 
			
		||||
	return winio.OpenForBackup(longpath, syscall.GENERIC_READ, syscall.FILE_SHARE_READ|syscall.FILE_SHARE_WRITE|syscall.FILE_SHARE_DELETE, syscall.OPEN_EXISTING)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func ntRelativePath(path string) ([]uint16, error) {
 | 
			
		||||
func cleanGoStringRelativePath(path string) (string, error) {
 | 
			
		||||
	path = filepath.Clean(path)
 | 
			
		||||
	if strings.Contains(path, ":") {
 | 
			
		||||
		// Since alternate data streams must follow the file they
 | 
			
		||||
		// are attached to, finding one here (out of order) is invalid.
 | 
			
		||||
		return nil, errors.New("path contains invalid character `:`")
 | 
			
		||||
		return "", errors.New("path contains invalid character `:`")
 | 
			
		||||
	}
 | 
			
		||||
	fspath := filepath.FromSlash(path)
 | 
			
		||||
	if len(fspath) > 0 && fspath[0] == '\\' {
 | 
			
		||||
		return nil, errors.New("expected relative path")
 | 
			
		||||
		return "", errors.New("expected relative path")
 | 
			
		||||
	}
 | 
			
		||||
	return fspath, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func ntRelativePath(path string) ([]uint16, error) {
 | 
			
		||||
	fspath, err := cleanGoStringRelativePath(path)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	path16 := utf16.Encode(([]rune)(fspath))
 | 
			
		||||
@ -110,11 +57,11 @@ func ntRelativePath(path string) ([]uint16, error) {
 | 
			
		||||
func openRelativeInternal(path string, root *os.File, accessMask uint32, shareFlags uint32, createDisposition uint32, flags uint32) (*os.File, error) {
 | 
			
		||||
	var (
 | 
			
		||||
		h    uintptr
 | 
			
		||||
		iosb ioStatusBlock
 | 
			
		||||
		oa   objectAttributes
 | 
			
		||||
		iosb winapi.IOStatusBlock
 | 
			
		||||
		oa   winapi.ObjectAttributes
 | 
			
		||||
	)
 | 
			
		||||
 | 
			
		||||
	path16, err := ntRelativePath(path)
 | 
			
		||||
	cleanRelativePath, err := cleanGoStringRelativePath(path)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
@ -123,20 +70,16 @@ func openRelativeInternal(path string, root *os.File, accessMask uint32, shareFl
 | 
			
		||||
		return nil, errors.New("missing root directory")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	upathBuffer := localAlloc(0, int(unsafe.Sizeof(unicodeString{}))+len(path16)*2)
 | 
			
		||||
	defer localFree(upathBuffer)
 | 
			
		||||
 | 
			
		||||
	upath := (*unicodeString)(unsafe.Pointer(upathBuffer))
 | 
			
		||||
	upath.Length = uint16(len(path16) * 2)
 | 
			
		||||
	upath.MaximumLength = upath.Length
 | 
			
		||||
	upath.Buffer = upathBuffer + unsafe.Sizeof(*upath)
 | 
			
		||||
	copy((*[32768]uint16)(unsafe.Pointer(upath.Buffer))[:], path16)
 | 
			
		||||
	pathUnicode, err := winapi.NewUnicodeString(cleanRelativePath)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	oa.Length = unsafe.Sizeof(oa)
 | 
			
		||||
	oa.ObjectName = upathBuffer
 | 
			
		||||
	oa.ObjectName = uintptr(unsafe.Pointer(pathUnicode))
 | 
			
		||||
	oa.RootDirectory = uintptr(root.Fd())
 | 
			
		||||
	oa.Attributes = _OBJ_DONT_REPARSE
 | 
			
		||||
	status := ntCreateFile(
 | 
			
		||||
	oa.Attributes = winapi.OBJ_DONT_REPARSE
 | 
			
		||||
	status := winapi.NtCreateFile(
 | 
			
		||||
		&h,
 | 
			
		||||
		accessMask|syscall.SYNCHRONIZE,
 | 
			
		||||
		&oa,
 | 
			
		||||
@ -145,12 +88,12 @@ func openRelativeInternal(path string, root *os.File, accessMask uint32, shareFl
 | 
			
		||||
		0,
 | 
			
		||||
		shareFlags,
 | 
			
		||||
		createDisposition,
 | 
			
		||||
		FILE_OPEN_FOR_BACKUP_INTENT|FILE_SYNCHRONOUS_IO_NONALERT|flags,
 | 
			
		||||
		winapi.FILE_OPEN_FOR_BACKUP_INTENT|winapi.FILE_SYNCHRONOUS_IO_NONALERT|flags,
 | 
			
		||||
		nil,
 | 
			
		||||
		0,
 | 
			
		||||
	)
 | 
			
		||||
	if status != 0 {
 | 
			
		||||
		return nil, rtlNtStatusToDosError(status)
 | 
			
		||||
		return nil, winapi.RtlNtStatusToDosError(status)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	fullPath, err := longpath.LongAbs(filepath.Join(root.Name(), path))
 | 
			
		||||
@ -182,7 +125,7 @@ func LinkRelative(oldname string, oldroot *os.File, newname string, newroot *os.
 | 
			
		||||
		oldroot,
 | 
			
		||||
		syscall.FILE_WRITE_ATTRIBUTES,
 | 
			
		||||
		syscall.FILE_SHARE_READ|syscall.FILE_SHARE_WRITE|syscall.FILE_SHARE_DELETE,
 | 
			
		||||
		FILE_OPEN,
 | 
			
		||||
		winapi.FILE_OPEN,
 | 
			
		||||
		0,
 | 
			
		||||
	)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
@ -199,8 +142,8 @@ func LinkRelative(oldname string, oldroot *os.File, newname string, newroot *os.
 | 
			
		||||
			newroot,
 | 
			
		||||
			syscall.GENERIC_READ,
 | 
			
		||||
			syscall.FILE_SHARE_READ|syscall.FILE_SHARE_WRITE|syscall.FILE_SHARE_DELETE,
 | 
			
		||||
			FILE_OPEN,
 | 
			
		||||
			FILE_DIRECTORY_FILE)
 | 
			
		||||
			winapi.FILE_OPEN,
 | 
			
		||||
			winapi.FILE_DIRECTORY_FILE)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return &os.LinkError{Op: "link", Old: oldf.Name(), New: filepath.Join(newroot.Name(), newname), Err: err}
 | 
			
		||||
		}
 | 
			
		||||
@ -211,7 +154,7 @@ func LinkRelative(oldname string, oldroot *os.File, newname string, newroot *os.
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		if (fi.FileAttributes & syscall.FILE_ATTRIBUTE_REPARSE_POINT) != 0 {
 | 
			
		||||
			return &os.LinkError{Op: "link", Old: oldf.Name(), New: filepath.Join(newroot.Name(), newname), Err: rtlNtStatusToDosError(_STATUS_REPARSE_POINT_ENCOUNTERED)}
 | 
			
		||||
			return &os.LinkError{Op: "link", Old: oldf.Name(), New: filepath.Join(newroot.Name(), newname), Err: winapi.RtlNtStatusToDosError(winapi.STATUS_REPARSE_POINT_ENCOUNTERED)}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	} else {
 | 
			
		||||
@ -227,24 +170,25 @@ func LinkRelative(oldname string, oldroot *os.File, newname string, newroot *os.
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	size := int(unsafe.Offsetof(fileLinkInformation{}.FileName)) + len(newbase16)*2
 | 
			
		||||
	linkinfoBuffer := localAlloc(0, size)
 | 
			
		||||
	defer localFree(linkinfoBuffer)
 | 
			
		||||
	linkinfo := (*fileLinkInformation)(unsafe.Pointer(linkinfoBuffer))
 | 
			
		||||
	size := int(unsafe.Offsetof(winapi.FileLinkInformation{}.FileName)) + len(newbase16)*2
 | 
			
		||||
	linkinfoBuffer := winapi.LocalAlloc(0, size)
 | 
			
		||||
	defer winapi.LocalFree(linkinfoBuffer)
 | 
			
		||||
 | 
			
		||||
	linkinfo := (*winapi.FileLinkInformation)(unsafe.Pointer(linkinfoBuffer))
 | 
			
		||||
	linkinfo.RootDirectory = parent.Fd()
 | 
			
		||||
	linkinfo.FileNameLength = uint32(len(newbase16) * 2)
 | 
			
		||||
	copy((*[32768]uint16)(unsafe.Pointer(&linkinfo.FileName[0]))[:], newbase16)
 | 
			
		||||
 | 
			
		||||
	var iosb ioStatusBlock
 | 
			
		||||
	status := ntSetInformationFile(
 | 
			
		||||
	var iosb winapi.IOStatusBlock
 | 
			
		||||
	status := winapi.NtSetInformationFile(
 | 
			
		||||
		oldf.Fd(),
 | 
			
		||||
		&iosb,
 | 
			
		||||
		linkinfoBuffer,
 | 
			
		||||
		uint32(size),
 | 
			
		||||
		_FileLinkInformation,
 | 
			
		||||
		winapi.FileLinkInformationClass,
 | 
			
		||||
	)
 | 
			
		||||
	if status != 0 {
 | 
			
		||||
		return &os.LinkError{Op: "link", Old: oldf.Name(), New: filepath.Join(parent.Name(), newbase), Err: rtlNtStatusToDosError(status)}
 | 
			
		||||
		return &os.LinkError{Op: "link", Old: oldf.Name(), New: filepath.Join(parent.Name(), newbase), Err: winapi.RtlNtStatusToDosError(status)}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
@ -252,17 +196,17 @@ func LinkRelative(oldname string, oldroot *os.File, newname string, newroot *os.
 | 
			
		||||
 | 
			
		||||
// deleteOnClose marks a file to be deleted when the handle is closed.
 | 
			
		||||
func deleteOnClose(f *os.File) error {
 | 
			
		||||
	disposition := fileDispositionInformationEx{Flags: FILE_DISPOSITION_DELETE}
 | 
			
		||||
	var iosb ioStatusBlock
 | 
			
		||||
	status := ntSetInformationFile(
 | 
			
		||||
	disposition := winapi.FileDispositionInformationEx{Flags: winapi.FILE_DISPOSITION_DELETE}
 | 
			
		||||
	var iosb winapi.IOStatusBlock
 | 
			
		||||
	status := winapi.NtSetInformationFile(
 | 
			
		||||
		f.Fd(),
 | 
			
		||||
		&iosb,
 | 
			
		||||
		uintptr(unsafe.Pointer(&disposition)),
 | 
			
		||||
		uint32(unsafe.Sizeof(disposition)),
 | 
			
		||||
		_FileDispositionInformationEx,
 | 
			
		||||
		winapi.FileDispositionInformationExClass,
 | 
			
		||||
	)
 | 
			
		||||
	if status != 0 {
 | 
			
		||||
		return rtlNtStatusToDosError(status)
 | 
			
		||||
		return winapi.RtlNtStatusToDosError(status)
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
@ -291,10 +235,10 @@ func RemoveRelative(path string, root *os.File) error {
 | 
			
		||||
	f, err := openRelativeInternal(
 | 
			
		||||
		path,
 | 
			
		||||
		root,
 | 
			
		||||
		FILE_READ_ATTRIBUTES|FILE_WRITE_ATTRIBUTES|DELETE,
 | 
			
		||||
		winapi.FILE_READ_ATTRIBUTES|winapi.FILE_WRITE_ATTRIBUTES|winapi.DELETE,
 | 
			
		||||
		syscall.FILE_SHARE_READ|syscall.FILE_SHARE_WRITE|syscall.FILE_SHARE_DELETE,
 | 
			
		||||
		FILE_OPEN,
 | 
			
		||||
		FILE_OPEN_REPARSE_POINT)
 | 
			
		||||
		winapi.FILE_OPEN,
 | 
			
		||||
		winapi.FILE_OPEN_REPARSE_POINT)
 | 
			
		||||
	if err == nil {
 | 
			
		||||
		defer f.Close()
 | 
			
		||||
		err = deleteOnClose(f)
 | 
			
		||||
@ -385,8 +329,8 @@ func MkdirRelative(path string, root *os.File) error {
 | 
			
		||||
		root,
 | 
			
		||||
		0,
 | 
			
		||||
		syscall.FILE_SHARE_READ|syscall.FILE_SHARE_WRITE|syscall.FILE_SHARE_DELETE,
 | 
			
		||||
		FILE_CREATE,
 | 
			
		||||
		FILE_DIRECTORY_FILE)
 | 
			
		||||
		winapi.FILE_CREATE,
 | 
			
		||||
		winapi.FILE_DIRECTORY_FILE)
 | 
			
		||||
	if err == nil {
 | 
			
		||||
		f.Close()
 | 
			
		||||
	} else {
 | 
			
		||||
@ -401,10 +345,10 @@ func LstatRelative(path string, root *os.File) (os.FileInfo, error) {
 | 
			
		||||
	f, err := openRelativeInternal(
 | 
			
		||||
		path,
 | 
			
		||||
		root,
 | 
			
		||||
		FILE_READ_ATTRIBUTES,
 | 
			
		||||
		winapi.FILE_READ_ATTRIBUTES,
 | 
			
		||||
		syscall.FILE_SHARE_READ|syscall.FILE_SHARE_WRITE|syscall.FILE_SHARE_DELETE,
 | 
			
		||||
		FILE_OPEN,
 | 
			
		||||
		FILE_OPEN_REPARSE_POINT)
 | 
			
		||||
		winapi.FILE_OPEN,
 | 
			
		||||
		winapi.FILE_OPEN_REPARSE_POINT)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, &os.PathError{Op: "stat", Path: filepath.Join(root.Name(), path), Err: err}
 | 
			
		||||
	}
 | 
			
		||||
@ -421,7 +365,7 @@ func EnsureNotReparsePointRelative(path string, root *os.File) error {
 | 
			
		||||
		root,
 | 
			
		||||
		0,
 | 
			
		||||
		syscall.FILE_SHARE_READ|syscall.FILE_SHARE_WRITE|syscall.FILE_SHARE_DELETE,
 | 
			
		||||
		FILE_OPEN,
 | 
			
		||||
		winapi.FILE_OPEN,
 | 
			
		||||
		0)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user