Commit Briefs

Omar Polo

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.



Omar Polo

don't quote $5 when calling pkg-config

otherwise we fail the openssl test 'libcrypto libssl'


Omar Polo

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.


Omar Polo

add -Wpointer-sign to the mix

It's not present in -W -Wall -Wextra on OpenBSD but it is enabled on other systems.


Omar Polo

configure: look for WAIT_ANY


Omar Polo

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.


Omar Polo

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.


Omar Polo

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!



Omar Polo

bump version ahead of 1.8 branch


Omar Polo

add memmem compat


Omar Polo

fix previous



Omar Polo

work around missing LOGIN_NAME_MAX

Both Linux and OpenBSD have LOGIN_NAME_MAX available when including limits.h, FreeBSD, Darwin and possibly others don't. FreeBSD (and maybe Darwin) have MAXLOGNAME, so try to use that if available. Otherwise use _POSIX_LOGIN_NAME_MAX, but only has a fallback since it has a lower value (9 at the time of writing). If everything fails, use 32 which is what OpenBSD use by default; OpenSMTPd also defaults to it. (compat copied from kamid.)