Debian Bug report logs - #533232
read(2): document behavior when count=0 but fd is not open

version graph

Package: manpages-dev; Maintainer for manpages-dev is Martin Schulze <joey@debian.org>; Source for manpages-dev is src:manpages.

Reported by: Zack Weinberg <zackw@panix.com>

Date: Mon, 15 Jun 2009 19:21:01 UTC

Severity: minor

Tags: fixed-upstream

Found in version manpages/3.21-1

Fixed in version manpages/3.51-1

Done: Simon Paillard <spaillard@debian.org>

Bug is archived. No further changes may be made.

Toggle useless messages

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to debian-bugs-dist@lists.debian.org, zackw@panix.com, Martin Schulze <joey@debian.org>:
Bug#533232; Package manpages-dev. (Mon, 15 Jun 2009 19:21:04 GMT) Full text and rfc822 format available.

Acknowledgement sent to Zack Weinberg <zackw@panix.com>:
New Bug report received and forwarded. Copy sent to zackw@panix.com, Martin Schulze <joey@debian.org>. (Mon, 15 Jun 2009 19:21:04 GMT) Full text and rfc822 format available.

Message #5 received at submit@bugs.debian.org (full text, mbox):

From: Zack Weinberg <zackw@panix.com>
To: Debian Bug Tracking System <submit@bugs.debian.org>
Subject: read(2): document behavior when count=0 but fd is not open
Date: Mon, 15 Jun 2009 12:12:29 -0700
Package: manpages-dev
Version: 3.21-1
Severity: minor

The read(2) manpage currently says

      If _count_ is zero, read() returns zero and has no other results.

but this does not explain what happens if the _fd_ or _buf_ parameters are
invalid (== would cause an error return or a segmentation fault if _count_
were nonzero).

I experimented and found that Linux returns -1/EBADF if count is zero but
fd refers to a file descriptor that is not open; all the other cases I can
trivially test (read 0 bytes from an fd open for writing only, read 0 bytes
with an invalid buffer pointer) do return 0 and leave errno untouched.

I do not, however, know if this behavior can be relied on in portable code.
(If not, it might be nice to mention that fcntl(fd, F_GETFL, 0) is a portable
way to determine whether 'fd' is an open file descriptor.)

zw

-- System Information:
Debian Release: squeeze/sid
  APT prefers unstable
  APT policy: (990, 'unstable'), (500, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.29-2-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages manpages-dev depends on:
ii  manpages                      3.21-1     Manual pages about using a GNU/Lin

manpages-dev recommends no packages.

Versions of packages manpages-dev suggests:
ii  man-db [man-browser]          2.5.5-2    on-line manual pager

-- no debconf information




Information forwarded to debian-bugs-dist@lists.debian.org, Martin Schulze <joey@debian.org>:
Bug#533232; Package manpages-dev. (Tue, 12 Feb 2013 21:39:03 GMT) Full text and rfc822 format available.

Acknowledgement sent to mtk.manpages@gmail.com:
Extra info received and forwarded to list. Copy sent to Martin Schulze <joey@debian.org>. (Tue, 12 Feb 2013 21:39:04 GMT) Full text and rfc822 format available.

Message #10 received at 533232@bugs.debian.org (full text, mbox):

From: "Michael Kerrisk (man-pages)" <mtk.manpages@gmail.com>
To: Zack Weinberg <zackw@panix.com>, 533232@bugs.debian.org
Cc: control@bugs.debian.org
Subject: Re: Bug#533232: read(2): document behavior when count=0 but fd is not open
Date: Tue, 12 Feb 2013 22:35:00 +0100
tags 533232 fixed-upstream
thanks

On Mon, Jun 15, 2009 at 9:12 PM, Zack Weinberg <zackw@panix.com> wrote:
> Package: manpages-dev
> Version: 3.21-1
> Severity: minor
>
> The read(2) manpage currently says
>
>       If _count_ is zero, read() returns zero and has no other results.
>
> but this does not explain what happens if the _fd_ or _buf_ parameters are
> invalid (== would cause an error return or a segmentation fault if _count_
> were nonzero).
>
> I experimented and found that Linux returns -1/EBADF if count is zero but
> fd refers to a file descriptor that is not open; all the other cases I can
> trivially test (read 0 bytes from an fd open for writing only, read 0 bytes
> with an invalid buffer pointer) do return 0 and leave errno untouched.
>
> I do not, however, know if this behavior can be relied on in portable code.
> (If not, it might be nice to mention that fcntl(fd, F_GETFL, 0) is a portable
> way to determine whether 'fd' is an open file descriptor.)

Zack,

POSIX deliberately leaves the behavor here open. The read(3p) page says:

       Before  any  action  described  below is taken, and if nbyte is
       zero, the read() function  may  detect  and  return  errors  as
       described  below.  In the absence of errors, or if error detec‐
       tion is not performed, the read() function  shall  return  zero
       and have no other results.

I've adjusted the text in the Linux read(2) page, replacing:

       If count is zero, read() returns zero and has no other results.

with

       If count is zero, read() may detect the errors described below.
       In  the  absence of any errors, of if read() does not check for
       errors, a read() with a count of 0  returns  zero  and  has  no
       other effects.

Cheers,

Michael



Added tag(s) fixed-upstream. Request was from "Michael Kerrisk (man-pages)" <mtk.manpages@gmail.com> to control@bugs.debian.org. (Tue, 12 Feb 2013 21:39:05 GMT) Full text and rfc822 format available.

Information forwarded to debian-bugs-dist@lists.debian.org, Martin Schulze <joey@debian.org>:
Bug#533232; Package manpages-dev. (Wed, 13 Feb 2013 12:45:03 GMT) Full text and rfc822 format available.

Acknowledgement sent to Simon Paillard <spaillard@debian.org>:
Extra info received and forwarded to list. Copy sent to Martin Schulze <joey@debian.org>. (Wed, 13 Feb 2013 12:45:03 GMT) Full text and rfc822 format available.

Message #17 received at 533232@bugs.debian.org (full text, mbox):

From: Simon Paillard <spaillard@debian.org>
To: 533232@bugs.debian.org
Subject: Re: Bug#533232: read(2): document behavior when count=0 but fd is not open
Date: Wed, 13 Feb 2013 13:40:01 +0100
Hi,

On Tue, Feb 12, 2013 at 10:35:00PM +0100, Michael Kerrisk (man-pages) wrote:
> tags 533232 fixed-upstream
> thanks

FTR, it will be in 3.48
5ab77f3dab4 read.2: Clarify interaction of count==0 and error checking


-- 
Simon Paillard



Added tag(s) pending. Request was from Simon Paillard <spaillard@debian.org> to control@bugs.debian.org. (Tue, 05 Mar 2013 23:15:12 GMT) Full text and rfc822 format available.

Reply sent to Simon Paillard <spaillard@debian.org>:
You have taken responsibility. (Thu, 23 May 2013 22:51:12 GMT) Full text and rfc822 format available.

Notification sent to Zack Weinberg <zackw@panix.com>:
Bug acknowledged by developer. (Thu, 23 May 2013 22:51:12 GMT) Full text and rfc822 format available.

Message #24 received at 533232-close@bugs.debian.org (full text, mbox):

From: Simon Paillard <spaillard@debian.org>
To: 533232-close@bugs.debian.org
Subject: Bug#533232: fixed in manpages 3.51-1
Date: Thu, 23 May 2013 22:48:40 +0000
Source: manpages
Source-Version: 3.51-1

We believe that the bug you reported is fixed in the latest version of
manpages, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 533232@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Simon Paillard <spaillard@debian.org> (supplier of updated manpages package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Format: 1.8
Date: Thu, 23 May 2013 23:05:10 +0200
Source: manpages
Binary: manpages manpages-dev
Architecture: source all
Version: 3.51-1
Distribution: unstable
Urgency: low
Maintainer: Martin Schulze <joey@debian.org>
Changed-By: Simon Paillard <spaillard@debian.org>
Description: 
 manpages   - Manual pages about using a GNU/Linux system
 manpages-dev - Manual pages about using GNU/Linux for development
Closes: 182014 235967 533232 542601 553413 575077 578178 620746 674034 676264 692136 699387 700529 704787 705293
Changes: 
 manpages (3.51-1) unstable; urgency=low
 .
   * Imported Upstream version 3.51:
     . new manpages: kcmp.3 s390_runtime_instr.2 if_freenameindex.3
       if_indextoname.3 if_nameindex.3 if_nametoindex.3 (Closes: #235967)
       perf_event_open.2 getcontext.3 getdtablesize.3 pthread_getname_np.3
       pthread_setname_np.3 setcontext.3 sln.8
       fattach.2 fdetach.2 getmsg.2 getunwind.2 isastream.2
       perfmonctl.2 putmsg.2 nss.5
     . ttyname.3: Fix confused text in ERRORS (Closes: #676264)
     . proc.5: Add field numbers for (Closes: #553413)
     . read.2: Remove crufty text about O_NONBLOCK on files (Closes: #700529)
     . read.2: Clarify interaction of count==0 and error check (Closes: #533232)
     . getpeername.2: Clarify semantics of getpeername() for datagram
       sockets (Closes: #674034)
     . mmap.2: Some 'flags' values require a feature test macro to be
       defined (Closes: #542601)
     . resolver.3, resolv.conf.5: RES_DEBUG is only available if glibc is
       compiled with debug support (Closes: #692136)
     . stdarg.3: Describe va_copy() (Closes: #575077)
     . futimes.3: ERRORS: Add ENOSYS for lutimes() (Closes: #620746)
     . units.7: units should use an actual µ (Closes: #704787)
     . access.2: Clarify RETURN VALUE for F_OK (Closes: #705293)
     . resolv.conf.5: Document "single-request-reopen" option (Closes: #699387)
     . bootparam.7: Document 'rootfstype' option (Closes: #182014)
     . ioperm.2: Linux 2.6.8 lifted the port limit to 65,536 (Closes: #578178)
   * d/rules: build-{arch,indep} as required by policy 3.9.4
   * lintian overrides: FSSTND-dir-in-manual-page are alternate path
Checksums-Sha1: 
 f277d33dc4ae2e2824fd7f2d747ec18f272a0d59 1907 manpages_3.51-1.dsc
 96c93e69f4e5db0952361b25db3eb3c19504ac1f 1828168 manpages_3.51.orig.tar.gz
 beaf9204e88e4406e7afd7d6014e7ea7af620e2f 47215 manpages_3.51-1.diff.gz
 db917de30d91a0382c32b8a71a57331eb0da7d40 823120 manpages_3.51-1_all.deb
 3d8a2bba0b3c9cb0ef8e4ab545eb37b5b1bf1974 1803556 manpages-dev_3.51-1_all.deb
Checksums-Sha256: 
 bf5b05f49b85e86052694c2c80fc1a9119437c88b60f0606d786b301b1c6f07b 1907 manpages_3.51-1.dsc
 f6639351a6a9e7fd9a82bae7dbefa8cb73557794e04a5d6a05bf8f64b8457bad 1828168 manpages_3.51.orig.tar.gz
 0151dd7c6eeeae5f3e764b5a5ac03fa6a48e3c36eeaa19e550de2ccbf0cfb337 47215 manpages_3.51-1.diff.gz
 fd60606aecff76039e414d9930b528900c90916f226ab61e24a1ce782de85916 823120 manpages_3.51-1_all.deb
 ebf111927854d749bfe4b1b510fe4ac49b965ed3466795a0456c144de3e5311f 1803556 manpages-dev_3.51-1_all.deb
Files: 
 233eff29953c78f8c1257fda9f31a6d2 1907 doc important manpages_3.51-1.dsc
 bed1627674356ec85492c5e94619b23d 1828168 doc important manpages_3.51.orig.tar.gz
 3144b81732373b7f027c071c58f6c230 47215 doc important manpages_3.51-1.diff.gz
 4df5993a51d7985a0a271d0a4bf19d79 823120 doc important manpages_3.51-1_all.deb
 075aa05d2cae81593bf807ad5b56585f 1803556 doc optional manpages-dev_3.51-1_all.deb

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)

iQIcBAEBCAAGBQJRnplOAAoJEN/3OMLRbPuiX0EP/0++s6v9aB7OtKEXos4RnFbQ
SAOyHWgLaBJ7ui/nb0OfUHWhZ3DxfgkGQmcDw0EU86pvr5FAJinMKV0rJ7s4YacY
VxL5Ryw0VlvnTBWt017c2GgRxFtMUZFY3wvuvB4hJRCnjFujR3e8ARvDjmYTGr/0
xIP/5dMqEXJIKKFBdg3PDI1p+MqG5xapINBX2kegRI6bAWmEXq356JkIvGy2QuLU
OKkrFeKijgaij8ZPuwDqrq2Wax3wsB8Qn4RKM64zRZpilEDvRZZHBBHwpdDFl8rr
iIlFuXeC0fePVMefJ1u7T8X640hoFMNBcYU5lJdT4rHKPlqDJFIU+C9SlRH1kxYX
+0x4EgzOxzLZfXmP0FoQpeCC4kOqpLOteFHylLHFr9RItKHmFdvBiPCGTjuAb71c
dtPJLx+LgXoHagvOI9wc1aS6AAsVove1PRJtAaj7jNK5SJX+o0chT2rWXkw2HHYy
sJMLb5ePdwP15IsuUwkN8XDyWsnEfPyM+hIgoPByyNZolEsrzXKlpAl62I5cCI/D
8LHgLmAhKEsRwbvvy9EhgzV5+qAS5ABL6T1BB55ZRKZ8omkMq5AXeHGhgYwISeYp
AdM4DTI0kWZ7yNgrJxsIMtewPgR2pI1Cgf+B7xzZHfP94+ogSKEq/jdvgJEml9St
INgTr6jypYWrNIjoJenf
=cbGv
-----END PGP SIGNATURE-----




Bug archived. Request was from Debbugs Internal Request <owner@bugs.debian.org> to internal_control@bugs.debian.org. (Mon, 01 Jul 2013 07:31:01 GMT) Full text and rfc822 format available.

Send a report that this bug log contains spam.


Debian bug tracking system administrator <owner@bugs.debian.org>. Last modified: Fri Apr 25 06:56:59 2014; Machine Name: buxtehude.debian.org

Debian Bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.