+2013-01-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ tests: don't assume fd 99 is closed
+ * tests/test-accept.c, tests/test-accept4.c, tests/test-bind.c:
+ * tests/test-close.c, tests/test-connect.c, tests/test-dprintf.c:
+ * tests/test-dup.c, tests/test-dup2.c, tests/test-faccessat.c:
+ * tests/test-fchdir.c, tests/test-fchmod.c, tests/test-fchmodat.c:
+ * tests/test-fchown.c, tests/test-fchownat.c, tests/test-fclose.c:
+ * tests/test-fdatasync.c, tests/test-fdopen.c, tests/test-fdopendir.c:
+ * tests/test-fflush.c, tests/test-fgetc.c, tests/test-fputc.c:
+ * tests/test-fread.c, tests/test-freopen.c, tests/test-fseeko4.c:
+ * tests/test-fstat.c, tests/test-fstatat.c, tests/test-fsync.c:
+ * tests/test-ftello4.c, tests/test-ftruncate.c, tests/test-futimens.h:
+ * tests/test-fwrite.c, tests/test-getpeername.c:
+ * tests/test-getsockname.c, tests/test-getsockopt.c:
+ * tests/test-grantpt.c, tests/test-ioctl.c, tests/test-isatty.c:
+ * tests/test-linkat.c, tests/test-listen.c, tests/test-lseek.c:
+ * tests/test-mkdirat.c, tests/test-mkfifoat.c, tests/test-openat.c:
+ * tests/test-pread.c, tests/test-pwrite.c, tests/test-read.c:
+ * tests/test-readlinkat.c, tests/test-recv.c, tests/test-recvfrom.c:
+ * tests/test-renameat.c, tests/test-select.h, tests/test-send.c:
+ * tests/test-sendto.c, tests/test-setsockopt.c, tests/test-shutdown.c:
+ * tests/test-symlinkat.c, tests/test-ttyname_r.c:
+ * tests/test-unlinkat.c, tests/test-unlockpt.c:
+ * tests/test-utimensat.c, tests/test-vdprintf.c, tests/test-write.c:
+ Close file descriptor 99, instead of assuming it's already closed.
+
2013-01-21 Paul Eggert <eggert@cs.ucla.edu>
stpncpy: port to OS X 10.8
struct sockaddr_in addr;
socklen_t addrlen = sizeof (addr);
+ close (99);
errno = 0;
ASSERT (accept (99, (struct sockaddr *) &addr, &addrlen) == -1);
ASSERT (errno == EBADF);
struct sockaddr_in addr;
socklen_t addrlen = sizeof (addr);
+ close (99);
errno = 0;
ASSERT (accept4 (99, (struct sockaddr *) &addr, &addrlen,
O_CLOEXEC | O_BINARY)
ASSERT (errno == EBADF);
}
{
+ close (99);
errno = 0;
ASSERT (bind (99, (const struct sockaddr *) &addr, sizeof (addr)) == -1);
ASSERT (errno == EBADF);
ASSERT (errno == EBADF);
}
{
+ close (99);
errno = 0;
ASSERT (close (99) == -1);
ASSERT (errno == EBADF);
ASSERT (errno == EBADF);
}
{
+ close (99);
errno = 0;
ASSERT (connect (99, (const struct sockaddr *) &addr, sizeof (addr))
== -1);
ASSERT (errno == EBADF);
}
{
+ close (99);
errno = 0;
ASSERT (dprintf (99, "test") == -1);
ASSERT (errno == EBADF);
ASSERT (errno == EBADF);
}
{
+ close (99);
errno = 0;
ASSERT (dup (99) == -1);
ASSERT (errno == EBADF);
errno = 0;
ASSERT (dup2 (-1, fd) == -1);
ASSERT (errno == EBADF);
+ close (99);
errno = 0;
ASSERT (dup2 (99, fd) == -1);
ASSERT (errno == EBADF);
ASSERT (errno == EBADF);
}
{
+ close (99);
errno = 0;
ASSERT (faccessat (99, "foo", F_OK, 0) == -1);
ASSERT (errno == EBADF);
ASSERT (errno == EBADF);
}
{
+ close (99);
errno = 0;
ASSERT (fchdir (99) == -1);
ASSERT (errno == EBADF);
ASSERT (errno == EBADF);
}
{
+ close (99);
errno = 0;
ASSERT (fchmod (99, 0600) == -1);
ASSERT (errno == EBADF);
ASSERT (errno == EBADF);
}
{
+ close (99);
errno = 0;
ASSERT (fchmodat (99, "foo", 0600, 0) == -1);
ASSERT (errno == EBADF);
ASSERT (errno == EBADF);
}
{
+ close (99);
errno = 0;
ASSERT (fchown (99, getuid (), getgid ()) == -1);
ASSERT (errno == EBADF);
ASSERT (errno == EBADF);
}
{
+ close (99);
errno = 0;
ASSERT (fchownat (99, "foo", getuid (), getgid (), 0) == -1);
ASSERT (errno == EBADF);
}
}
{
- FILE *fp = fdopen (99, "r");
+ FILE *fp;
+ close (99);
+ fp = fdopen (99, "r");
if (fp != NULL)
{
errno = 0;
ASSERT (errno == EBADF);
}
{
+ close (99);
errno = 0;
ASSERT (fdatasync (99) == -1);
ASSERT (errno == EBADF);
{
FILE *fp;
+ close (99);
errno = 0;
fp = fdopen (99, "r");
if (fp == NULL)
ASSERT (errno == EBADF);
}
{
+ close (99);
errno = 0;
ASSERT (fdopendir (99) == NULL);
ASSERT (errno == EBADF);
}
}
{
- FILE *fp = fdopen (99, "w");
+ FILE *fp;
+ close (99);
+ fp = fdopen (99, "w");
if (fp != NULL)
{
fputc ('x', fp);
}
}
{
- FILE *fp = fdopen (99, "r");
+ FILE *fp;
+ close (99);
+ fp = fdopen (99, "r");
if (fp != NULL)
{
errno = 0;
}
}
{
- FILE *fp = fdopen (99, "w");
+ FILE *fp;
+ close (99);
+ fp = fdopen (99, "w");
if (fp != NULL)
{
setvbuf (fp, NULL, _IONBF, 0);
}
}
{
- FILE *fp = fdopen (99, "r");
+ FILE *fp;
+ close (99);
+ fp = fdopen (99, "r");
if (fp != NULL)
{
char buf[1];
}
}
{
- FILE *fp = fdopen (99, "w+");
+ FILE *fp;
+ close (99);
+ fp = fdopen (99, "w+");
if (fp != NULL)
{
errno = 0;
}
}
{
- FILE *fp = fdopen (99, "w");
+ FILE *fp;
+ close (99);
+ fp = fdopen (99, "w");
if (fp != NULL)
{
errno = 0;
{
struct stat statbuf;
+ close (99);
errno = 0;
ASSERT (fstat (99, &statbuf) == -1);
ASSERT (errno == EBADF);
{
struct stat statbuf;
+ close (99);
errno = 0;
ASSERT (fstatat (99, "foo", &statbuf, 0) == -1);
ASSERT (errno == EBADF);
ASSERT (errno == EBADF);
}
{
+ close (99);
errno = 0;
ASSERT (fsync (99) == -1);
ASSERT (errno == EBADF);
}
}
{
- FILE *fp = fdopen (99, "w");
+ FILE *fp;
+ close (99);
+ fp = fdopen (99, "w");
if (fp != NULL)
{
errno = 0;
ASSERT (errno == EBADF);
}
{
+ close (99);
errno = 0;
ASSERT (ftruncate (99, 0) == -1);
ASSERT (errno == EBADF);
ASSERT (errno == EBADF);
}
{
+ close (99);
errno = 0;
ASSERT (func (99, NULL) == -1);
ASSERT (errno == EBADF);
}
}
{
- FILE *fp = fdopen (99, "w");
+ FILE *fp;
+ close (99);
+ fp = fdopen (99, "w");
if (fp != NULL)
{
char buf[5] = "world";
struct sockaddr_in addr;
socklen_t addrlen = sizeof (addr);
+ close (99);
errno = 0;
ASSERT (getpeername (99, (struct sockaddr *) &addr, &addrlen) == -1);
ASSERT (errno == EBADF);
struct sockaddr_in addr;
socklen_t addrlen = sizeof (addr);
+ close (99);
errno = 0;
ASSERT (getsockname (99, (struct sockaddr *) &addr, &addrlen) == -1);
ASSERT (errno == EBADF);
int value;
socklen_t value_len = sizeof (value);
+ close (99);
errno = 0;
ASSERT (getsockopt (99, SOL_SOCKET, SO_REUSEADDR, &value, &value_len)
== -1);
{
int ret;
+ close (99);
errno = 0;
ret = grantpt (99);
if (ret != 0)
}
{
int value;
+ close (99);
errno = 0;
ASSERT (ioctl (99, FIONREAD, &value) == -1);
ASSERT (errno == EBADF);
);
}
{
+ close (99);
errno = 0;
ASSERT (isatty (99) == 0);
ASSERT (errno == EBADF
ASSERT (errno == EBADF);
}
{
+ close (99);
errno = 0;
ASSERT (linkat (99, "foo", AT_FDCWD, "bar", 0) == -1);
ASSERT (errno == EBADF);
ASSERT (errno == EBADF);
}
{
+ close (99);
errno = 0;
ASSERT (listen (99 ,1) == -1);
ASSERT (errno == EBADF);
ASSERT (lseek (-1, (off_t)0, SEEK_CUR) == -1);
ASSERT (errno == EBADF);
+ close (99);
errno = 0;
ASSERT (lseek (99, (off_t)0, SEEK_CUR) == -1);
ASSERT (errno == EBADF);
ASSERT (errno == EBADF);
}
{
+ close (99);
errno = 0;
ASSERT (mkdirat (99, "foo", 0700) == -1);
ASSERT (errno == EBADF);
);
}
{
+ close (99);
errno = 0;
ASSERT (func (99, "foo", 0600) == -1);
ASSERT (errno == EBADF
ASSERT (errno == EBADF);
}
{
+ close (99);
errno = 0;
ASSERT (openat (99, "foo", O_RDONLY) == -1);
ASSERT (errno == EBADF);
}
{
char byte;
+ close (99);
errno = 0;
ASSERT (pread (99, &byte, 1, 0) == -1);
ASSERT (errno == EBADF);
}
{
char byte = 'x';
+ close (99);
errno = 0;
ASSERT (pwrite (99, &byte, 1, 0) == -1);
ASSERT (errno == EBADF);
}
{
char byte;
+ close (99);
errno = 0;
ASSERT (read (99, &byte, 1) == -1);
ASSERT (errno == EBADF);
ASSERT (errno == EBADF);
}
{
+ close (99);
errno = 0;
ASSERT (readlinkat (99, "foo", buf, sizeof buf) == -1);
ASSERT (errno == EBADF);
}
{
char byte;
+ close (99);
errno = 0;
ASSERT (recv (99, &byte, 1, 0) == -1);
ASSERT (errno == EBADF);
struct sockaddr_in addr;
socklen_t addrlen = sizeof (addr);
+ close (99);
errno = 0;
ASSERT (recvfrom (99, &byte, 1, 0, (struct sockaddr *) &addr, &addrlen)
== -1);
ASSERT (errno == EBADF);
}
{
+ close (99);
errno = 0;
ASSERT (renameat (99, "foo", AT_FDCWD, "bar") == -1);
ASSERT (errno == EBADF);
# else
fd = 99;
# endif
+ close (fd);
if (do_select_bad_fd_nowait (fd, SEL_IN, my_select) == 0 || errno != EBADF)
failed ("invalid fd among rfds");
}
{
char byte = 'x';
+ close (99);
errno = 0;
ASSERT (send (99, &byte, 1, 0) == -1);
ASSERT (errno == EBADF);
}
{
char byte = 'x';
+ close (99);
errno = 0;
ASSERT (sendto (99, &byte, 1, 0,
(const struct sockaddr *) &addr, sizeof (addr))
{
int value = 1;
+ close (99);
errno = 0;
ASSERT (setsockopt (99, SOL_SOCKET, SO_REUSEADDR, &value, sizeof (value))
== -1);
ASSERT (errno == EBADF);
}
{
+ close (99);
errno = 0;
ASSERT (shutdown (99, SHUT_RD) == -1);
ASSERT (errno == EBADF);
);
}
{
+ close (99);
errno = 0;
ASSERT (symlinkat ("foo", 99, "bar") == -1);
ASSERT (errno == EBADF
);
}
{
- int err = ttyname_r (99, buf, sizeof (buf));
+ int err;
+ close (99);
+ err = ttyname_r (99, buf, sizeof (buf));
ASSERT (err == EBADF
|| err == ENOTTY /* seen on FreeBSD 6.4 */
);
ASSERT (errno == EBADF);
}
{
+ close (99);
errno = 0;
ASSERT (unlinkat (99, "foo", 0) == -1);
ASSERT (errno == EBADF);
);
}
{
+ close (99);
errno = 0;
ASSERT (unlockpt (99) == -1);
ASSERT (errno == EBADF
ASSERT (errno == EBADF);
}
{
+ close (99);
errno = 0;
ASSERT (utimensat (99, "foo", NULL, 0) == -1);
ASSERT (errno == EBADF);
ASSERT (errno == EBADF);
}
{
+ close (99);
errno = 0;
ASSERT (my_dprintf (99, "test") == -1);
ASSERT (errno == EBADF);
}
{
char byte = 'x';
+ close (99);
errno = 0;
ASSERT (write (99, &byte, 1) == -1);
ASSERT (errno == EBADF);