Hi,
Accidentally relayd(8) closes file descriptor 0 in the pfe child
process. Usually this is a bad idea.
snmp_init() does this:
if (env->sc_snmp != -1) {
...
close(env->sc_snmp);
env->sc_snmp = -1;
}
But env has been initialized with 0 by calloc(3). It has to be set
to -1 to make the logic work.
ok?
bluhm
Index: usr.sbin/relayd/relayd.c
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/usr.sbin/relayd/relayd.c,v
retrieving revision 1.172
diff -u -p -r1.172 relayd.c
--- usr.sbin/relayd/relayd.c 6 Aug 2018 17:31:31 -0000 1.172
+++ usr.sbin/relayd/relayd.c 31 Aug 2018 22:10:25 -0000
@@ -184,6 +184,7 @@ main(int argc, char *argv[])
TAILQ_INIT(&env->sc_hosts);
TAILQ_INIT(&env->sc_sessions);
env->sc_rtable = getrtable();
+ env->sc_snmp = -1;
/* initialize the TLS session id to a random key for all relay procs */
arc4random_buf(env->sc_conf.tls_sid, sizeof(env->sc_conf.tls_sid));