From owner-freebsd-standards@FreeBSD.ORG Fri Jan 24 01:41:12 2014 Return-Path: Delivered-To: freebsd-standards@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D65FB9B4 for ; Fri, 24 Jan 2014 01:41:12 +0000 (UTC) Received: from secure.xzibition.com (secure.xzibition.com [173.160.118.92]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 62E0013B7 for ; Fri, 24 Jan 2014 01:41:08 +0000 (UTC) DomainKey-Signature: a=rsa-sha1; c=nofws; d=shatow.net; h=date:from:to :cc:subject:message-id:mime-version:content-type; q=dns; s=sweb; b= szw+C7Gv7c006RPbqYdwi7xYmIaQ3f2ukXUPmfrFBnN2kH+ye8KTETnBAB2ABIlF KSMQofsAcrR/AaNC6mmSN2eDS6ONI57bZMEDCiU82LVZbtOxkEBVXGOd2CVaeCdk 9qS0Xt0K+ICBLRUtuDIddbR8Xu0T8Lya0Z9+PQDWxeI= DKIM-Signature: v=1; a=rsa-sha256; c=simple; d=shatow.net; h=date:from :to:cc:subject:message-id:mime-version:content-type; s=sweb; bh= ZychxXsoIf6tvVpJXluuOZzU8CkTopcvtx+eiNdVE38=; b=otcn8rlWKF1S9fX2 Px2Ku1MIVCxCWIfbQfE471SCjjkNQyMORztmG6WDnKDgl8qxAhfUYXYItv6OcTXF I4MAxUrR9KWIoAopdHAAP2aRrS80LcScrEjDEDl7fYl/oO4irNYwpvcLPmy85pgO +pVax2756hVQmxIm4vyq7FkEmlY= Received: (qmail 53479 invoked from network); 23 Jan 2014 19:41:06 -0600 Received: from unknown (HELO admin.xzibition.com) (bryan@shatow.net@173.160.118.90) by sweb.xzibition.com with ESMTPA; 23 Jan 2014 19:41:06 -0600 Date: Thu, 23 Jan 2014 19:41:05 -0600 From: Bryan Drewery To: freebsd-standards@FreeBSD.org Subject: closedir(3) handling NULL Message-ID: <20140124014105.GC37334@admin.xzibition.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="bjuZg6miEcdLYP6q" Content-Disposition: inline User-Agent: Mutt/1.5.22 (2013-10-16) Cc: bapt@FreeBSD.org X-BeenThere: freebsd-standards@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: Standards compliance List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 24 Jan 2014 01:41:13 -0000 --bjuZg6miEcdLYP6q Content-Type: multipart/mixed; boundary="7gGkHNMELEOhSGF6" Content-Disposition: inline --7gGkHNMELEOhSGF6 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hi, Please review. I would like to commit this. I found that Linux handles closedir(NULL) fine and returns EINVAL. POSIX [1] specifies that EBADF should be returned if "The dirp argument does not refer to an open directory stream" [1] http://pubs.opengroup.org/onlinepubs/009696799/functions/closedir.html I've updated fdclosedir(3) as well to behave the same. I'll also update the manpage if there is no objection. Thanks, Bryan Drewery --7gGkHNMELEOhSGF6 Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="closedir-NULL.diff" Content-Transfer-Encoding: quoted-printable Fix closedir(3) and fdclosedir(3) to return EBADF on NULL value. POSIX specifies that EBADF should be returned if "The dirp argument does not refer to an open directory stream" diff --git lib/libc/gen/closedir.c lib/libc/gen/closedir.c index 88ded37..d7a5bdb 100644 --- lib/libc/gen/closedir.c +++ lib/libc/gen/closedir.c @@ -53,6 +53,11 @@ fdclosedir(DIR *dirp) { int fd; =20 + if (dirp =3D=3D NULL) { + errno =3D EBADF; + return (-1); + } + if (__isthreaded) _pthread_mutex_lock(&dirp->dd_lock); fd =3D dirp->dd_fd; @@ -71,6 +76,10 @@ fdclosedir(DIR *dirp) int closedir(DIR *dirp) { + int fd; + + if ((fd =3D fdclosedir(dirp)) =3D=3D -1) + return (-1); =20 - return (_close(fdclosedir(dirp))); + return (_close(fd)); } --7gGkHNMELEOhSGF6-- --bjuZg6miEcdLYP6q Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (FreeBSD) iQJ8BAEBCgBmBQJS4cSxXxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXQzNkZFQkU5OTJGNTI4MERGNDgxMTM2MkE2 RTc4MkFDMDNDOUIwQ0Y5AAoJEG54KsA8mwz5tKUP+QEo5yVcaAynGvyVVJmEr0m2 IuXb4UaAOVnGKu3Ju85vegOZR/r6QIfObMtgykJspb/TbKqG0t2GXH81UYUnXCJl qsCH5Vm0LOowdPuv50DZRr0/Ewwn/jDR152xhQJ4qn2sna7EWXNm9vRObNUp8Qru FqBN6RSvmHvdxR9E7/GnN1cGsEDofJTJIGl23ejQu5+mQoXbFaudsGSLEmERBAb2 lygGZzJVKHZHnLLECmvnW8OYh/kOoZVuaC5rny2JjEMbFdy6uon3vUEJ7KRpWf6h yjgAJyZxpQrMl+/K7x4ZgIq7hI7FE8y6G5r9pyYgYI3dNqrtXsWpQmHFzmCYVzF2 7l/BPfw9a8uj4JJXEmkVsBLpjt7V/prL9HlHRWYK0LwcLpfv1YzYBt1JcVQy/63+ 8/r4ftSd/t38t6wIK1dTuWvjogANqagqA64PGO5lyCGJLe9w3HUnTWshDsg5iyu8 zq50+SDwjDor4cSVwJfIX1DXcRQwHmdF8SnChxfZLxseHUipRORPxW3vbg3wSqj9 z46EfCwJWEr6nO6FRYU5ChAFd6uHPdLfVOvlQT1xyV4SAibR/EMoX3KNCOW7gbsX ULCsVL8xrul2CweEpIM/vBbwHo+u/yhcF1PVyq6lnsmqqafq/V05GAkXE2Kl9jll XaYiMu7JxV24RYJNp7dW =ZQBm -----END PGP SIGNATURE----- --bjuZg6miEcdLYP6q--