Page MenuHomeFreeBSD

ctld: Fix assertion against the wrong field
ClosedPublic

Authored by jhb on Jan 23 2025, 3:50 PM.
Tags
None
Referenced Files
F151281118: D48622.id.diff
Tue, Apr 7, 7:32 AM
F151252465: D48622.id149886.diff
Tue, Apr 7, 3:23 AM
Unknown Object (File)
Thu, Apr 2, 5:26 AM
Unknown Object (File)
Wed, Apr 1, 3:02 PM
Unknown Object (File)
Mon, Mar 30, 7:02 AM
Unknown Object (File)
Thu, Mar 26, 12:37 PM
Unknown Object (File)
Sun, Mar 22, 4:14 AM
Unknown Object (File)
Thu, Mar 19, 9:33 AM
Subscribers

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Skipped
Unit
Tests Skipped
Build Status
Buildable 61918
Build 58802: arc lint + arc unit

Event Timeline

jhb requested review of this revision.Jan 23 2025, 3:50 PM

I guess this is OK, but I haven't ever done anything with the discovery code, so I don't know how it's supposed to work.

This revision is now accepted and ready to land.Jan 23 2025, 4:15 PM

yea, this field is a pointer.

usr.sbin/ctld/discovery.c
164

As Warner noted, pg_discovery_filter is an integer field that holds one of the PG_FILTER_* values (an enum in essence), while pg_discovery_auth_group is a pointer to a struct auth_group. This is a type mismatch comparing a pointer to an integer. Not sure why the compiler didn't complain about this earlier. Maybe if PG_FILTER_UNKNOWN is 0 then it gets treated as NULL.

166

Here you can see the PG_FILTER_ values being compared against the integer field.

183

Here you can see the pointer dereferenced.

This revision was automatically updated to reflect the committed changes.