From owner-freebsd-bugs@FreeBSD.ORG Tue May 3 18:40:07 2005 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id DBCB916A4CE for ; Tue, 3 May 2005 18:40:07 +0000 (GMT) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 7043443D67 for ; Tue, 3 May 2005 18:40:07 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.3/8.13.3) with ESMTP id j43Ie1rG044949 for ; Tue, 3 May 2005 18:40:02 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.3/8.13.1/Submit) id j43Ie1cU044948; Tue, 3 May 2005 18:40:01 GMT (envelope-from gnats) Resent-Date: Tue, 3 May 2005 18:40:01 GMT Resent-Message-Id: <200505031840.j43Ie1cU044948@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Arne H Juul Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id CAF7C16A4CE for ; Tue, 3 May 2005 18:35:24 +0000 (GMT) Received: from midten.trondheim.corp.yahoo.com (midten.trondheim.corp.yahoo.com [217.144.236.68]) by mx1.FreeBSD.org (Postfix) with ESMTP id 9BBE843D5E for ; Tue, 3 May 2005 18:35:23 +0000 (GMT) (envelope-from arnej@europe.yahoo-inc.com) Received: from guinness.trondheim.corp.yahoo.com (guinness.trondheim.corp.yahoo.com [172.24.94.149])j43IZDd2046723 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Tue, 3 May 2005 20:35:13 +0200 (CEST) (envelope-from arnej@europe.yahoo-inc.com) Received: from guinness.trondheim.corp.yahoo.com (localhost [127.0.0.1]) j43IZ7Tx064032 for ; Tue, 3 May 2005 20:35:08 +0200 (CEST) (envelope-from arnej@guinness.trondheim.corp.yahoo.com) Received: (from arnej@localhost)j43IZ7at064031; Tue, 3 May 2005 20:35:07 +0200 (CEST) (envelope-from arnej) Message-Id: <200505031835.j43IZ7at064031@guinness.trondheim.corp.yahoo.com> Date: Tue, 3 May 2005 20:35:07 +0200 (CEST) From: Arne H Juul To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 Subject: kern/80587: accept(2) can return EINVAL for undocumented reason X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: Arne H Juul List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 May 2005 18:40:08 -0000 >Number: 80587 >Category: kern >Synopsis: accept(2) can return EINVAL for undocumented reason >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: doc-bug >Submitter-Id: current-users >Arrival-Date: Tue May 03 18:40:01 GMT 2005 >Closed-Date: >Last-Modified: >Originator: Arne H Juul >Release: FreeBSD 4.9-RC-BUILDENV-OVERTURE i386 >Organization: Yahoo! >Environment: System: FreeBSD guinness.trondheim.corp.yahoo.com 4.9-RC-BUILDENV-OVERTURE FreeBSD 4.9-RC-BUILDENV-OVERTURE #0: Sun Oct 12 21:33:45 CEST 2003 arnej@guinness.dev.trd.p4pnet.net:/usr/src/sys/compile/GUINNESS i386 seen in everything from 4.9 to -current. >Description: We had a problem where a daemon wouldn't read commands on its socket; after some debugging we found that accept() on the socket didn't work (with errno EINVAL). According to man 2 accept this can only be caused by "listen(2) has not been called" but after more intensive debugging we couldn't figure out how that was possible in our program. Inspection of the actual kernel source for accept(2) however shows that it also returns EINVAL when the namelen argument is negative; it turns out the program had a stupid bug where the namelen was uninitialized causing accept() to fail unpredicably depending on stack contents. The following documentation fix would (hopefully) have saved us some time chasing down codepaths through listen(). >How-To-Repeat: man 2 accept >Fix: Index: lib/libc/sys/accept.2 =================================================================== RCS file: /usr/cvs/src/lib/libc/sys/accept.2,v retrieving revision 1.30 diff -u -r1.30 accept.2 --- lib/libc/sys/accept.2 2 Jul 2004 23:52:13 -0000 1.30 +++ lib/libc/sys/accept.2 3 May 2005 18:25:35 -0000 @@ -154,6 +154,10 @@ .It Bq Er EINVAL .Xr listen 2 has not been called on the socket descriptor. +.It Bq Er EINVAL +The +.Fa addrlen +argument is negative. .It Bq Er EFAULT The .Fa addr >Release-Note: >Audit-Trail: >Unformatted: