Date: Fri, 20 Oct 2006 22:15:54 +0200 From: Aragon Gouveia <aragon@phat.za.net> To: freebsd-bugs@freebsd.org Subject: inetd UNIX socket bug (and small fix) Message-ID: <20061020201554.GA9906@phat.za.net>
next in thread | raw e-mail | index | archive | help
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? Thanks, Aragon --- inetd.c.orig Sun Jul 27 15:58:05 2003 +++ inetd.c Fri Oct 20 21:18:59 2006 @@ -2209,6 +2209,10 @@ addrlen = sizeof(struct in6_addr); break; #endif + case AF_UNIX: + p = (char *)&sin4->sin_addr; + addrlen = sizeof(struct in_addr); + break; default: /* should not happen */ return -1;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20061020201554.GA9906>