On 2021/01/06 10:24, Florian Obser wrote: > On Wed, Jan 06, 2021 at 10:11:01AM +0100, Anton Lindqvist wrote: > > Hi, > > I have a unbound forward zone configured on my router for my $DAYJOB. > > The address associated with the zone is only accessible when the router > > is connected to a VPN. If the VPN connection is absent, trying to > > resolve any domain that must be handled by the zone crashes unbound. > > Turns out there's a missing NULL check in comm_point_send_udp_msg(). > > The same routine already has `if (addr) {} else {}' branches so I guess > > protecting the call to log_addr() using the same conditional is > > reasonable. > > > > Should this instead be upstreamed? Comments? OK? > > yes, please upstream it. > > Could you also do sbin/unwind/libunbound/util/netevent.c? > > OK florian
Already committed but I'll add my OK too anyway ;) Thanks for tracking this down. > > > > > Index: util/netevent.c > > =================================================================== > > RCS file: /cvs/src/usr.sbin/unbound/util/netevent.c,v > > retrieving revision 1.27 > > diff -u -p -r1.27 netevent.c > > --- util/netevent.c 10 Dec 2020 21:44:58 -0000 1.27 > > +++ util/netevent.c 6 Jan 2021 09:03:59 -0000 > > @@ -379,8 +379,9 @@ comm_point_send_udp_msg(struct comm_poin > > if(!udp_send_errno_needs_log(addr, addrlen)) > > return 0; > > verbose(VERB_OPS, "sendto failed: %s", sock_strerror(errno)); > > - log_addr(VERB_OPS, "remote address is", > > - (struct sockaddr_storage*)addr, addrlen); > > + if(addr) > > + log_addr(VERB_OPS, "remote address is", > > + (struct sockaddr_storage*)addr, addrlen); > > return 0; > > } else if((size_t)sent != sldns_buffer_remaining(packet)) { > > log_err("sent %d in place of %d bytes", > > > > -- > I'm not entirely sure you are real. >