diff options
Diffstat (limited to 'src/pkg/syscall/security_windows.go')
-rw-r--r-- | src/pkg/syscall/security_windows.go | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/src/pkg/syscall/security_windows.go b/src/pkg/syscall/security_windows.go index bd40fe586..017b27014 100644 --- a/src/pkg/syscall/security_windows.go +++ b/src/pkg/syscall/security_windows.go @@ -37,10 +37,13 @@ const ( // TranslateAccountName converts a directory service // object name from one format to another. func TranslateAccountName(username string, from, to uint32, initSize int) (string, error) { - u := StringToUTF16Ptr(username) + u, e := UTF16PtrFromString(username) + if e != nil { + return "", e + } b := make([]uint16, 50) n := uint32(len(b)) - e := TranslateName(u, from, to, &b[0], &n) + e = TranslateName(u, from, to, &b[0], &n) if e != nil { if e != ERROR_INSUFFICIENT_BUFFER { return "", e @@ -67,7 +70,7 @@ type UserInfo10 struct { const ( // do not reorder - SidTypeUser = 1 << iota + SidTypeUser = 1 + iota SidTypeGroup SidTypeDomain SidTypeAlias @@ -94,7 +97,11 @@ type SID struct{} // sid into a valid, functional sid. func StringToSid(s string) (*SID, error) { var sid *SID - e := ConvertStringSidToSid(StringToUTF16Ptr(s), &sid) + p, e := UTF16PtrFromString(s) + if e != nil { + return nil, e + } + e = ConvertStringSidToSid(p, &sid) if e != nil { return nil, e } @@ -109,17 +116,23 @@ func LookupSID(system, account string) (sid *SID, domain string, accType uint32, if len(account) == 0 { return nil, "", 0, EINVAL } - acc := StringToUTF16Ptr(account) + acc, e := UTF16PtrFromString(account) + if e != nil { + return nil, "", 0, e + } var sys *uint16 if len(system) > 0 { - sys = StringToUTF16Ptr(system) + sys, e = UTF16PtrFromString(system) + if e != nil { + return nil, "", 0, e + } } db := make([]uint16, 50) dn := uint32(len(db)) b := make([]byte, 50) n := uint32(len(b)) sid = (*SID)(unsafe.Pointer(&b[0])) - e := LookupAccountName(sys, acc, sid, &n, &db[0], &dn, &accType) + e = LookupAccountName(sys, acc, sid, &n, &db[0], &dn, &accType) if e != nil { if e != ERROR_INSUFFICIENT_BUFFER { return nil, "", 0, e @@ -170,7 +183,10 @@ func (sid *SID) Copy() (*SID, error) { func (sid *SID) LookupAccount(system string) (account, domain string, accType uint32, err error) { var sys *uint16 if len(system) > 0 { - sys = StringToUTF16Ptr(system) + sys, err = UTF16PtrFromString(system) + if err != nil { + return "", "", 0, err + } } b := make([]uint16, 50) n := uint32(len(b)) |