Date: Tue, 21 Jan 2003 20:48:14 +0100 From: Pawel Jakub Dawidek <nick@garage.freebsd.pl> To: FreeBSD-gnats-submit@FreeBSD.org Cc: Pawel Jakub Dawidek <nick@garage.freebsd.pl> Subject: bin/47313: Segfault in inetd(8). Message-ID: <20030121194814.GQ9430@garage.freebsd.pl>
next in thread | raw e-mail | index | archive | help
>Number: 47313 >Category: bin >Synopsis: Segfault in inetd(8). >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Tue Jan 21 11:50:02 PST 2003 >Closed-Date: >Last-Modified: >Originator: Pawel Jakub Dawidek >Release: FreeBSD 4.7-STABLE i386 >Organization: CerbNG group. >Environment: System: FreeBSD leila.mikrus.pw.edu.pl 4.7-STABLE FreeBSD 4.7-STABLE #20: Mon Jan 20 23:21:30 CET 2003 root@leila.mikrus.pw.edu.pl:/usr/obj/usr/src/sys/LEILA i386 >Description: In some causes inetd(8) coredumps. I'm running inetd(8) with '-wWl' flags. Problem is in line 736 in inetd.c. syslog(3) is called there and one of its argument is: (((struct sockaddr *)req.client->sin)->sa_family == AF_INET6 && !IN6_IS_ADDR_V4MAPPED(&((struct sockaddr_in6 *)req.client->sin)->sin6_addr)) ? "6" : ""); And here req.client->sin could be NULL. >How-To-Repeat: I'm not quite sure. With some changes we got: [...] leila inetd[1323]: warning: can't get client address: Connection reset by peer [...] leila inetd[1323]: WE GOT NULL! <orginally here we got core dump> [...] leila inetd[1323]: connection from unknown, service ftpd (tcp) >Fix: I'm not sure if this is a fix. Maybe workaround only, because req.client->sin should never be NULL? --- inetd.c.orig Wed Aug 21 12:00:24 2002 +++ inetd.c Tue Jan 21 20:28:25 2003 @@ -736,7 +736,8 @@ syslog(allow_severity, "connection from %.500s, service %s (%s%s)", eval_client(&req), service, sep->se_proto, - (((struct sockaddr *)req.client->sin)->sa_family == AF_INET6 && !IN6_IS_ADDR_V4MAPPED(&((struct sockaddr_in6 *)req.client->sin)->sin6_addr)) ? "6" : ""); + (req.client->sin != NULL && ((struct sockaddr *)req.client->sin)->sa_family == AF_INET6 && + !IN6_IS_ADDR_V4MAPPED(&((struct sockaddr_in6 *)req.client->sin)->sin6_addr)) ? "6" : ""); } } if (sep->se_bi) { >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030121194814.GQ9430>