inetd UNIX socket bug (and small fix)
Maxim Konovalov
maxim at macomnet.ru
Fri Nov 10 13:14:02 UTC 2006
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
More information about the freebsd-bugs
mailing list