Date: Fri, 10 Nov 2006 16:13:48 +0300 (MSK) From: Maxim Konovalov <maxim@macomnet.ru> To: Aragon Gouveia <aragon@phat.za.net> Cc: freebsd-bugs@freebsd.org Subject: Re: inetd UNIX socket bug (and small fix) Message-ID: <20061110161054.P24498@mp2.macomnet.net> In-Reply-To: <20061020201554.GA9906@phat.za.net> References: <20061020201554.GA9906@phat.za.net>
next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 20 Oct 2006, 22:15+0200, Aragon Gouveia wrote: > Hello, > > I have been trying to setup a UNIX socket service in inetd, but it appears > the functionality has been broken for some time. I guess I'm the first to > notice. > > With a UNIX socket service entry in inetd.conf the socket file is created as > it should be, but when I try make a connection to the socket, it establishes > and then immediately closes. There is nothing logged to syslog and not > much info when in debug mode (inetd -d). > > In my code references below I should mention that I'm still running > 4.10-RELEASE so my line numbering might be out. But from looking at HEAD > via CVSweb it looks like the bug is still there. Hopefully this > information is of relevance. > > I had a look through inetd.c and found the following in cpmip() starting at > line 2202: > > --- > case AF_INET: > p = (char *)&sin4->sin_addr; > addrlen = sizeof(struct in_addr); > break; > #ifdef INET6 > case AF_INET6: > p = (char *)&sin6->sin6_addr; > addrlen = sizeof(struct in6_addr); > break; > #endif > default: > /* should not happen */ > return -1; > } > --- > > There is no case entry for AF_UNIX. From my testing execution was reaching > the default: entry when an AF_UNIX connection was established. When cpmip() > returns a negative value it looks like inetd silently closes the socket. > > At the bottom of this message is a patch which seems to make it work. The > only oddity is that when logging is enabled (inetd -l), AF_UNIX connections > are logged as coming from "unknown". No biggie for me, but there might be a > better fix. > > Should I create a PR for this? inetd over AF_UNIX works OK on RELENG_4 and HEAD. I've just added :maxim:maxim:220:/tmp/telnet stream unix nowait root /usr/libexec/telnetd telnetd to inetd.conf and was able to login to my system via telnet -u /tmp/telnet. Builtin services like chargen work over AF_UNIX sockets too. -- Maxim Konovalov
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20061110161054.P24498>