Add magic define to enable setgroups(2)
ClosedPublic

Authored by mpyne on Jul 9 2017, 11:49 PM.

Details

Summary

The KIO KPAC DHCP helper uses setgroups(2). But this is apparently not specified in POSIX due to being a "privileged call", so it is only available as an extension, typically needing _BSD_SOURCE to be explicitly defined from what I can gather.

glibc will gladly provide setgroups() as a GNU extension without requiring _BSD_SOURCE, but musl libc requires one of _{BSD_GNU}_SOURCE and doesn't pre-define either.

Defining _BSD_SOURCE is easy enough but it seems that glibc now complains about that, calling it deprecated, so I also threw in a _DEFAULT_SOURCE define, which appears to be the new hotness. But maybe it would be easier to find a way to avoid setgroups()?

Test Plan

KIO now builds under musl libc
KIO still builds under glibc

Diff Detail

Repository
R241 KIO
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.
mpyne created this revision.Jul 9 2017, 11:49 PM
Restricted Application added a project: Frameworks. · View Herald TranscriptJul 9 2017, 11:49 PM

With the help of the KDE sysadmins, I've tested this to build on FreeBSD. BSD-specific defines remain available on FreeBSD unless you start to use _POSIX_C_SOURCE, _ANSI_SOURCE, or _XOPEN_SOURCE. So _BSD_SOURCE and _DEFAULT_SOURCE appear to be safe for FreeBSD.

This revision was automatically updated to reflect the committed changes.