Browse Source

Merge pull request #20983 from Microsoft/jstarks/fix_save_powershell_remoting

Windows: Revendor github.com/Microsoft/go-winio
David Calavera 9 years ago
parent
commit
9ff7439162

+ 1 - 1
hack/vendor.sh

@@ -8,7 +8,7 @@ source 'hack/.vendor-helpers.sh'
 # the following lines are in sorted order, FYI
 # the following lines are in sorted order, FYI
 clone git github.com/Azure/go-ansiterm 70b2c90b260171e829f1ebd7c17f600c11858dbe
 clone git github.com/Azure/go-ansiterm 70b2c90b260171e829f1ebd7c17f600c11858dbe
 clone git github.com/Microsoft/hcsshim 116e0e9f5ced0cec94ae46d0aa1b3002a325f532
 clone git github.com/Microsoft/hcsshim 116e0e9f5ced0cec94ae46d0aa1b3002a325f532
-clone git github.com/Microsoft/go-winio c40bf24f405ab3cc8e1383542d474e813332de6d
+clone git github.com/Microsoft/go-winio f778f05015353be65d242f3fedc18695756153bb
 clone git github.com/Sirupsen/logrus v0.9.0 # logrus is a common dependency among multiple deps
 clone git github.com/Sirupsen/logrus v0.9.0 # logrus is a common dependency among multiple deps
 clone git github.com/docker/libtrust 9cbd2a1374f46905c68a4eb3694a130610adc62a
 clone git github.com/docker/libtrust 9cbd2a1374f46905c68a4eb3694a130610adc62a
 clone git github.com/go-check/check 11d3bc7aa68e238947792f30573146a3231fc0f1
 clone git github.com/go-check/check 11d3bc7aa68e238947792f30573146a3231fc0f1

+ 6 - 3
vendor/src/github.com/Microsoft/go-winio/privilege.go

@@ -9,7 +9,7 @@ import (
 	"unicode/utf16"
 	"unicode/utf16"
 )
 )
 
 
-//sys adjustTokenPrivileges(token syscall.Handle, releaseAll bool, input *byte, outputSize uint32, output *byte, requiredSize *uint32) (err error) = advapi32.AdjustTokenPrivileges
+//sys adjustTokenPrivileges(token syscall.Handle, releaseAll bool, input *byte, outputSize uint32, output *byte, requiredSize *uint32) (success bool, err error) [true] = advapi32.AdjustTokenPrivileges
 //sys impersonateSelf(level uint32) (err error) = advapi32.ImpersonateSelf
 //sys impersonateSelf(level uint32) (err error) = advapi32.ImpersonateSelf
 //sys revertToSelf() (err error) = advapi32.RevertToSelf
 //sys revertToSelf() (err error) = advapi32.RevertToSelf
 //sys openThreadToken(thread syscall.Handle, accessMask uint32, openAsSelf bool, token *syscall.Handle) (err error) = advapi32.OpenThreadToken
 //sys openThreadToken(thread syscall.Handle, accessMask uint32, openAsSelf bool, token *syscall.Handle) (err error) = advapi32.OpenThreadToken
@@ -21,6 +21,8 @@ import (
 const (
 const (
 	SE_PRIVILEGE_ENABLED = 2
 	SE_PRIVILEGE_ENABLED = 2
 
 
+	ERROR_NOT_ALL_ASSIGNED syscall.Errno = 1300
+
 	SeBackupPrivilege  = "SeBackupPrivilege"
 	SeBackupPrivilege  = "SeBackupPrivilege"
 	SeRestorePrivilege = "SeRestorePrivilege"
 	SeRestorePrivilege = "SeRestorePrivilege"
 )
 )
@@ -91,10 +93,11 @@ func adjustPrivileges(token syscall.Handle, privileges []uint64) error {
 	}
 	}
 	prevState := make([]byte, b.Len())
 	prevState := make([]byte, b.Len())
 	reqSize := uint32(0)
 	reqSize := uint32(0)
-	if err := adjustTokenPrivileges(token, false, &b.Bytes()[0], uint32(len(prevState)), &prevState[0], &reqSize); err != nil {
+	success, err := adjustTokenPrivileges(token, false, &b.Bytes()[0], uint32(len(prevState)), &prevState[0], &reqSize)
+	if !success {
 		return err
 		return err
 	}
 	}
-	if int(binary.LittleEndian.Uint32(prevState[0:4])) < len(privileges) {
+	if err == ERROR_NOT_ALL_ASSIGNED {
 		return &PrivilegeError{privileges}
 		return &PrivilegeError{privileges}
 	}
 	}
 	return nil
 	return nil

+ 4 - 3
vendor/src/github.com/Microsoft/go-winio/zsyscall.go

@@ -266,15 +266,16 @@ func setFileInformationByHandle(h syscall.Handle, class uint32, buffer *byte, si
 	return
 	return
 }
 }
 
 
-func adjustTokenPrivileges(token syscall.Handle, releaseAll bool, input *byte, outputSize uint32, output *byte, requiredSize *uint32) (err error) {
+func adjustTokenPrivileges(token syscall.Handle, releaseAll bool, input *byte, outputSize uint32, output *byte, requiredSize *uint32) (success bool, err error) {
 	var _p0 uint32
 	var _p0 uint32
 	if releaseAll {
 	if releaseAll {
 		_p0 = 1
 		_p0 = 1
 	} else {
 	} else {
 		_p0 = 0
 		_p0 = 0
 	}
 	}
-	r1, _, e1 := syscall.Syscall6(procAdjustTokenPrivileges.Addr(), 6, uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(input)), uintptr(outputSize), uintptr(unsafe.Pointer(output)), uintptr(unsafe.Pointer(requiredSize)))
-	if r1 == 0 {
+	r0, _, e1 := syscall.Syscall6(procAdjustTokenPrivileges.Addr(), 6, uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(input)), uintptr(outputSize), uintptr(unsafe.Pointer(output)), uintptr(unsafe.Pointer(requiredSize)))
+	success = r0 != 0
+	if true {
 		if e1 != 0 {
 		if e1 != 0 {
 			err = error(e1)
 			err = error(e1)
 		} else {
 		} else {