Merge pull request #1392 from brianryner8/getfsstat-count

Truncate the Getfsstat result to the count of items that were returned
This commit is contained in:
shirou 2022-12-18 13:19:54 +09:00 committed by GitHub
commit 39f3b34192
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 7 additions and 1 deletions

View File

@ -20,9 +20,15 @@ func PartitionsWithContext(ctx context.Context, all bool) ([]PartitionStat, erro
return ret, err return ret, err
} }
fs := make([]unix.Statfs_t, count) fs := make([]unix.Statfs_t, count)
if _, err = unix.Getfsstat(fs, unix.MNT_WAIT); err != nil { count, err = unix.Getfsstat(fs, unix.MNT_WAIT)
if err != nil {
return ret, err return ret, err
} }
// On 10.14, and possibly other OS versions, the actual count may
// be less than from the first call. Truncate to the returned count
// to prevent accessing uninitialized entries.
// https://github.com/shirou/gopsutil/issues/1390
fs = fs[:count]
for _, stat := range fs { for _, stat := range fs {
opts := []string{"rw"} opts := []string{"rw"}
if stat.Flags&unix.MNT_RDONLY != 0 { if stat.Flags&unix.MNT_RDONLY != 0 {