From: Bart Van Assche Date: Tue, 27 May 2008 12:33:29 +0000 (+0000) Subject: Make the fdleak regression tests less system dependent. X-Git-Tag: svn/VALGRIND_3_4_0~551 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6d555b318a06891b8366ace42590809c778a98ef;p=thirdparty%2Fvalgrind.git Make the fdleak regression tests less system dependent. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8133 --- diff --git a/none/tests/fdleak.h b/none/tests/fdleak.h new file mode 100644 index 0000000000..bbe94914b7 --- /dev/null +++ b/none/tests/fdleak.h @@ -0,0 +1,15 @@ +#ifndef _FDLEAK_H_ +#define _FDLEAK_H_ + +/* + * The macro below closes file descriptors inherited from the process + * that forked the current process. Close these file descriptors right + * after the start of main() in order to get consistent results across + * different releases. Known behavior: + * - Fedora Core 1's Perl opens /dev/pts/2 as fd 10. + * - For Ubuntu 8.04, see also + * https://bugs.launchpad.net/ubuntu/+source/seahorse/+bug/235184 + */ +#define CLOSE_INHERITED_FDS { int i; for (i = 3; i < 64; i++) close(i); } + +#endif /* _FDLEAK_H_ */ diff --git a/none/tests/fdleak_cmsg.c b/none/tests/fdleak_cmsg.c index d376bf4f9e..3c7db64cff 100644 --- a/none/tests/fdleak_cmsg.c +++ b/none/tests/fdleak_cmsg.c @@ -27,7 +27,7 @@ #include #include #include - +#include "fdleak.h" char filea[24]; char fileb[24]; @@ -179,12 +179,12 @@ main (int argc, char **argv) { int pid, status; - /* - * Fedora Core 1's Perl opens /dev/pts/2 as fd 10. Let's close it - * now to get consistent results across different releases. - */ - close(10); close(4); + + + + + CLOSE_INHERITED_FDS; pid = getpid(); sprintf(filea, "/tmp/data1.%d", pid); diff --git a/none/tests/fdleak_creat.c b/none/tests/fdleak_creat.c index 5ff356b48e..9d12216205 100644 --- a/none/tests/fdleak_creat.c +++ b/none/tests/fdleak_creat.c @@ -1,18 +1,18 @@ #include #include #include - +#include "fdleak.h" int main (int argc, char **argv) { char filename[24]; - /* - * Fedora Core 1's Perl opens /dev/pts/2 as fd 10. Let's close it - * now to get consistent results across different releases. - */ - close(10); close(4); + + + + + CLOSE_INHERITED_FDS; sprintf(filename, "/tmp/file.%d\n", getpid()); creat(filename, 0); diff --git a/none/tests/fdleak_dup.c b/none/tests/fdleak_dup.c index a0b9b81f34..5fbf41a955 100644 --- a/none/tests/fdleak_dup.c +++ b/none/tests/fdleak_dup.c @@ -1,17 +1,17 @@ #include #include - +#include "fdleak.h" int main (int argc, char **argv) { int s; - /* - * Fedora Core 1's Perl opens /dev/pts/2 as fd 10. Let's close it - * now to get consistent results across different releases. - */ - close(10); close(4); + + + + + CLOSE_INHERITED_FDS; s = open("/dev/null", O_RDONLY); dup(s); diff --git a/none/tests/fdleak_dup2.c b/none/tests/fdleak_dup2.c index 14c59f4ec5..41b770cc75 100644 --- a/none/tests/fdleak_dup2.c +++ b/none/tests/fdleak_dup2.c @@ -1,18 +1,18 @@ #include #include - +#include "fdleak.h" int main (int argc, char **argv) { int s1; int s2; - /* - * Fedora Core 1's Perl opens /dev/pts/2 as fd 10. Let's close it - * now to get consistent results across different releases. - */ - close(10); close(4); + + + + + CLOSE_INHERITED_FDS; s1 = open("/dev/null", O_RDONLY); s2 = open("/dev/null", O_RDONLY); diff --git a/none/tests/fdleak_fcntl.c b/none/tests/fdleak_fcntl.c index 0fee1db1ef..0a1f52d74a 100644 --- a/none/tests/fdleak_fcntl.c +++ b/none/tests/fdleak_fcntl.c @@ -1,18 +1,18 @@ #include #include #include - +#include "fdleak.h" int main (int argc, char **argv) { int s1; - /* - * Fedora Core 1's Perl opens /dev/pts/2 as fd 10. Let's close it - * now to get consistent results across different releases. - */ - close(10); close(4); + + + + + CLOSE_INHERITED_FDS; s1 = open("/dev/null", O_RDONLY); if(fcntl(s1, F_DUPFD, s1) == -1) perror("fcntl"); diff --git a/none/tests/fdleak_ipv4.c b/none/tests/fdleak_ipv4.c index b450dabcb3..cdc550dfb7 100644 --- a/none/tests/fdleak_ipv4.c +++ b/none/tests/fdleak_ipv4.c @@ -8,7 +8,7 @@ #include #include #include - +#include "fdleak.h" void server () { @@ -89,12 +89,12 @@ main (int argc, char **argv) { int pid, status; - /* - * Fedora Core 1's Perl opens /dev/pts/2 as fd 10. Let's close it - * now to get consistent results across different releases. - */ - close(10); close(4); + + + + + CLOSE_INHERITED_FDS; if((pid = fork()) == 0) { server(); diff --git a/none/tests/fdleak_open.c b/none/tests/fdleak_open.c index bf9dc395e6..c09979886d 100644 --- a/none/tests/fdleak_open.c +++ b/none/tests/fdleak_open.c @@ -1,14 +1,14 @@ #include #include +#include "fdleak.h" + int main (int argc, char **argv) { - /* - * Fedora Core 1's Perl opens /dev/pts/2 as fd 10. Let's close it - * now to get consistent results across different releases. - */ - close(10); close(4); + + + CLOSE_INHERITED_FDS; open("/dev/null", O_RDONLY); return 0; diff --git a/none/tests/fdleak_pipe.c b/none/tests/fdleak_pipe.c index 6c2d566d18..870ba9d3a4 100644 --- a/none/tests/fdleak_pipe.c +++ b/none/tests/fdleak_pipe.c @@ -1,16 +1,16 @@ #include - +#include "fdleak.h" int main (int argc, char **argv) { int fds[2]; - /* - * Fedora Core 1's Perl opens /dev/pts/2 as fd 10. Let's close it - * now to get consistent results across different releases. - */ - close(10); + + + + + CLOSE_INHERITED_FDS; pipe(fds); return 0; diff --git a/none/tests/fdleak_socketpair.c b/none/tests/fdleak_socketpair.c index 9c71cd4717..c2524eef2b 100644 --- a/none/tests/fdleak_socketpair.c +++ b/none/tests/fdleak_socketpair.c @@ -1,16 +1,16 @@ #include #include +#include "fdleak.h" + int main (int argc, char **argv) { int fds[2]; - /* - * Fedora Core 1's Perl opens /dev/pts/2 as fd 10. Let's close it - * now to get consistent results across different releases. - */ - close(10); close(4); + + + CLOSE_INHERITED_FDS; socketpair(AF_UNIX, SOCK_STREAM, PF_UNIX, fds); return 0;