Skip to content

Commit bdfd891

Browse files
authored
Merge pull request #1737 from lip234/master
Fixes #1736
2 parents 7676fc6 + 8bf4f8e commit bdfd891

File tree

1 file changed

+4
-7
lines changed

1 file changed

+4
-7
lines changed

implant/sliver/ps/ps_darwin.go

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -227,12 +227,9 @@ func getArgvFromPid(pid int) ([]string, error) {
227227
errStr := unix.ErrnoName(errno)
228228
return []string{""}, fmt.Errorf("%s", errStr)
229229
}
230-
buffer := bytes.NewBuffer(processArgs)
231-
numberOfArgs, err := binary.ReadUvarint(buffer)
232-
if err != nil {
233-
return []string{""}, err
234-
}
235-
buffer.Next(3) // skip sizeof(int32), the number of args
230+
buffer := bytes.NewBuffer(processArgs[0:size])
231+
numberOfArgsBytes := buffer.Next(4)
232+
numberOfArgs := binary.LittleEndian.Uint32(numberOfArgsBytes)
236233
argv := make([]string, numberOfArgs+1) // executable name is present twice
237234

238235
// There's probably a way to optimize that loop.
@@ -248,7 +245,7 @@ func getArgvFromPid(pid int) ([]string, error) {
248245
for {
249246
arg, err := buffer.ReadString(0x00)
250247
if err != nil {
251-
continue
248+
break
252249
}
253250
if strings.ReplaceAll(arg, "\x00", "") != "" {
254251
argv[i] = arg

0 commit comments

Comments
 (0)