Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

sensors: avoid passing nil pointer to CFArrayGetCount #1727

Merged
merged 1 commit into from
Oct 13, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions sensors/sensors_darwin_arm64.go
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,10 @@ func (ta *temperatureArm) getProductNames() []string {
ta.ioHIDEventSystemClientSetMatching(uintptr(system), uintptr(ta.sensors))
matchingsrvs := ta.ioHIDEventSystemClientCopyServices(uintptr(system))

if matchingsrvs == nil {
return nil
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Returning nil may cause another panic on dumpNameValues(). How about return empty value?

Suggested change
return nil
return []string{}

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the results of passing either nil or empty value to dumpNameValues() are same, both returning an empty []TemperatureStat

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I know that in Go, an empty slice can be represented as nil. However, due to the subtle differences, I thought that an empty slice was more explicit and therefore preferable. But after reviewing it again, I now see that a nil slice is considered better, so I retract my previous opinion. Thank you for your comment.

}

count := ta.cfArrayGetCount(uintptr(matchingsrvs))

var i int32
Expand Down Expand Up @@ -130,6 +134,10 @@ func (ta *temperatureArm) getThermalValues() []float64 {
ta.ioHIDEventSystemClientSetMatching(uintptr(system), uintptr(ta.sensors))
matchingsrvs := ta.ioHIDEventSystemClientCopyServices(uintptr(system))

if matchingsrvs == nil {
return nil
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ditto

Suggested change
return nil
return []float64{}

}

count := ta.cfArrayGetCount(uintptr(matchingsrvs))

var values []float64
Expand Down
Loading