Commits


fix INSTALL handling Set a sane default for INSTALL, allow it to be changed either as environment variable or configure argument, and propagate it correctly to the generated config.mk. Issue reported by xavi, thanks!


address the strnvis(3) portability fiasco strnvis originates on OpenBSD. When NetBSD added it to their libc they decided to swap the argument. Without starting a holy war on the "best" argument order, adding an implementation of a function that's widely available and making its signature purposefully incompatible is beyond justification. FreeBSD (and so macos too?) followed NetBSD in this, so we end up with *two* major and incompatible strnvis implementations. libbsd is in a limbo, they started with the OpenBSD version but they'll probably switch to the NetBSD version in the future. That's why we can't have nice things. Do the right thing(tm) and check for the presence of the original strnvis(3), if not available or broken use the bundled one.


add compat for endian (now required by imsg)


don't quote $5 when calling pkg-config otherwise we fail the openssl test 'libcrypto libssl'


rework the configure script now it resembles less oconfigure and more the configure scripts I'm using in my recent projects. I'd argue it's more easy to use it.


add -Wpointer-sign to the mix It's not present in -W -Wall -Wextra on OpenBSD but it is enabled on other systems.


configure: look for WAIT_ANY


use -MMD if the compiler supports it it's better than the previous Makefile.depend approach since this automatically adapts to the included headers without requiring manual intervention to regen the list.


rework the daemon to do fork+exec It uses the 'common' proc.c from various OpenBSD-daemons. gmid grew organically bit by bit and it was also the first place where I tried to implement privsep. It wasn't done very well, in fact the parent process (that retains root privileges) just fork()s a generation of servers, all sharing *exactly* the same address space. No good! Now, we fork() and re-exec() ourselves, so that each process has a fresh address space. Some features (require client ca for example) are temporarly disabled, will be fixed in subsequent commits. The "ge" program is also temporarly disabled as it needs tweaks to do privsep too.


drop landlock/seccomp and capsicum support it reached a point where this stuff is not maintenable. I'd like to move forward with gmid, but the restriction of capsicum and the linux environment at large that make landlock unusable (how can you resolve DNS portably when under landlock?) -and don't get me started on seccomp- makes it impossible for me to do any work. So, I prefer removing the crap, resuming working on gmid by cleaning stuff and consolidating the features, improving various things etc... and then eventually see how to introduce some sandboxing again on other systems. Patches to resume sandboxing are, as always, welcome!


add tests and compat for setresuid and setresgid


bump version ahead of 1.8 branch


add memmem compat


fix previous


work around missing HOST_NAME_MAX too