Skip to content

Commit a7604b9

Browse files
committed
sys: ensure passing chkptr check
Ensure passing chkptr(-gcflags=all=-d=checkptr) check introduced in go 1.14
1 parent 85ca7c5 commit a7604b9

File tree

6 files changed

+11
-13
lines changed

6 files changed

+11
-13
lines changed

unix/syscall_aix.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
235235
}
236236
}
237237

238-
bytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n]
238+
bytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n:n]
239239
sa.Name = string(bytes)
240240
return sa, nil
241241

windows/security_windows.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1224,12 +1224,13 @@ func (sd *SECURITY_DESCRIPTOR) IsValid() bool {
12241224
// used with %v formatting directives.
12251225
func (sd *SECURITY_DESCRIPTOR) String() string {
12261226
var sddl *uint16
1227-
err := convertSecurityDescriptorToStringSecurityDescriptor(sd, 1, 0xff, &sddl, nil)
1227+
var strLen uint32
1228+
err := convertSecurityDescriptorToStringSecurityDescriptor(sd, 1, 0xff, &sddl, &strLen)
12281229
if err != nil {
12291230
return ""
12301231
}
12311232
defer LocalFree(Handle(unsafe.Pointer(sddl)))
1232-
return UTF16ToString((*[(1 << 30) - 1]uint16)(unsafe.Pointer(sddl))[:])
1233+
return UTF16ToString((*[(1 << 30) - 1]uint16)(unsafe.Pointer(sddl))[:strLen:strLen])
12331234
}
12341235

12351236
// ToAbsolute converts a self-relative security descriptor into an absolute one.
@@ -1308,7 +1309,7 @@ func (absoluteSD *SECURITY_DESCRIPTOR) ToSelfRelative() (selfRelativeSD *SECURIT
13081309

13091310
func (selfRelativeSD *SECURITY_DESCRIPTOR) copySelfRelativeSecurityDescriptor() *SECURITY_DESCRIPTOR {
13101311
sdBytes := make([]byte, selfRelativeSD.Length())
1311-
copy(sdBytes, (*[(1 << 31) - 1]byte)(unsafe.Pointer(selfRelativeSD))[:len(sdBytes)])
1312+
copy(sdBytes, (*[(1 << 31) - 1]byte)(unsafe.Pointer(selfRelativeSD))[:len(sdBytes):len(sdBytes)])
13121313
return (*SECURITY_DESCRIPTOR)(unsafe.Pointer(&sdBytes[0]))
13131314
}
13141315

@@ -1391,6 +1392,6 @@ func ACLFromEntries(explicitEntries []EXPLICIT_ACCESS, mergedACL *ACL) (acl *ACL
13911392
}
13921393
defer LocalFree(Handle(unsafe.Pointer(winHeapACL)))
13931394
aclBytes := make([]byte, winHeapACL.aclSize)
1394-
copy(aclBytes, (*[(1 << 31) - 1]byte)(unsafe.Pointer(winHeapACL))[:len(aclBytes)])
1395+
copy(aclBytes, (*[(1 << 31) - 1]byte)(unsafe.Pointer(winHeapACL))[:len(aclBytes):len(aclBytes)])
13951396
return (*ACL)(unsafe.Pointer(&aclBytes[0])), nil
13961397
}

windows/svc/mgr/mgr.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ func (m *Mgr) ListServices() ([]string, error) {
201201
if servicesReturned == 0 {
202202
return nil, nil
203203
}
204-
services := (*[1 << 20]windows.ENUM_SERVICE_STATUS_PROCESS)(unsafe.Pointer(&buf[0]))[:servicesReturned]
204+
services := (*[1 << 20]windows.ENUM_SERVICE_STATUS_PROCESS)(unsafe.Pointer(&buf[0]))[:servicesReturned:servicesReturned]
205205
var names []string
206206
for _, s := range services {
207207
name := syscall.UTF16ToString((*[1 << 20]uint16)(unsafe.Pointer(s.ServiceName))[:])

windows/svc/mgr/recovery.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ func (s *Service) RecoveryActions() ([]RecoveryAction, error) {
6969
}
7070

7171
var recoveryActions []RecoveryAction
72-
actions := (*[1024]windows.SC_ACTION)(unsafe.Pointer(p.Actions))[:p.ActionsCount]
72+
actions := (*[1024]windows.SC_ACTION)(unsafe.Pointer(p.Actions))[:p.ActionsCount:p.ActionsCount]
7373
for _, action := range actions {
7474
recoveryActions = append(recoveryActions, RecoveryAction{Type: int(action.Type), Delay: time.Duration(action.Delay) * time.Millisecond})
7575
}

windows/svc/security.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@
77
package svc
88

99
import (
10-
"unsafe"
11-
1210
"golang.org/x/sys/windows"
1311
)
1412

@@ -48,9 +46,8 @@ func IsAnInteractiveSession() (bool, error) {
4846
if err != nil {
4947
return false, err
5048
}
51-
p := unsafe.Pointer(&gs.Groups[0])
52-
groups := (*[2 << 20]windows.SIDAndAttributes)(p)[:gs.GroupCount]
53-
for _, g := range groups {
49+
50+
for _, g := range gs.AllGroups() {
5451
if windows.EqualSid(g.Sid, interSid) {
5552
return true, nil
5653
}

windows/svc/service.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ const (
224224
func (s *service) run() {
225225
s.goWaits.Wait()
226226
s.h = windows.Handle(ssHandle)
227-
argv := (*[100]*int16)(unsafe.Pointer(sArgv))[:sArgc]
227+
argv := (*[100]*int16)(unsafe.Pointer(sArgv))[:sArgc:sArgc]
228228
args := make([]string, len(argv))
229229
for i, a := range argv {
230230
args[i] = syscall.UTF16ToString((*[1 << 20]uint16)(unsafe.Pointer(a))[:])

0 commit comments

Comments
 (0)