diff options
author | Thomas Schwinge <thomas@codesourcery.com> | 2013-12-20 09:29:29 +0100 |
---|---|---|
committer | Thomas Schwinge <thomas@codesourcery.com> | 2013-12-20 09:29:29 +0100 |
commit | a65dd355fb80a05215e15ae97649de52aec885e3 (patch) | |
tree | 81701bb0c6b648630f2bf1729a85d7f5eb49e67b /rt | |
parent | 296a5732f94abe4d5699dc981e4ccfb950b48cee (diff) | |
parent | b4578bab30f72cddd2cf38abfb39f9c8dc892249 (diff) |
Merge branch 'baseline' into refs/top-bases/tschwinge/Roger_Whittaker
Diffstat (limited to 'rt')
-rw-r--r-- | rt/aio.h | 4 | ||||
-rw-r--r-- | rt/tst-shm.c | 64 |
2 files changed, 31 insertions, 37 deletions
@@ -54,7 +54,7 @@ struct aiocb #else __off64_t aio_offset; /* File offset. */ #endif - char __unused[32]; + char __glibc_reserved[32]; }; /* The same for the 64bit offsets. Please note that the members aio_fildes @@ -77,7 +77,7 @@ struct aiocb64 __ssize_t __return_value; __off64_t aio_offset; /* File offset. */ - char __unused[32]; + char __glibc_reserved[32]; }; #endif diff --git a/rt/tst-shm.c b/rt/tst-shm.c index f9d5ab0098..83ad586ccf 100644 --- a/rt/tst-shm.c +++ b/rt/tst-shm.c @@ -34,34 +34,17 @@ /* We want to see output immediately. */ #define STDOUT_UNBUFFERED - -static int -do_open (void) -{ - int fd; - - /* Create the shared memory object. */ - fd = shm_open ("/shm-test", O_RDWR, 0600); - if (fd == -1) - { - /* We don't regard this as a bug. Simply don't run the test. It could - means there is no such implementation or the object is already in - use in which case we don't want to disturb. */ - perror ("failed to open shared memory object: shm_open"); - return -1; - } - - return fd; -} - - static void worker (int write_now) { struct timespec ts; struct stat64 st; int i; - int fd = do_open (); + int fd = shm_open ("/glibc-shm-test", O_RDWR, 0600); + + if (fd == -1) + error (EXIT_FAILURE, 0, "failed to open shared memory object: shm_open"); + char *mem; if (fd == -1) @@ -134,15 +117,26 @@ do_test (void) int status2; struct stat64 st; + fd = shm_open ("/../escaped", O_RDWR | O_CREAT | O_TRUNC | O_EXCL, 0600); + if (fd != -1) + { + perror ("read file outside of SHMDIR directory"); + return 1; + } + + /* Create the shared memory object. */ - fd = shm_open ("/shm-test", O_RDWR | O_CREAT | O_TRUNC | O_EXCL, 0600); + fd = shm_open ("/glibc-shm-test", O_RDWR | O_CREAT | O_TRUNC | O_EXCL, 0600); if (fd == -1) { - /* We don't regard this as a bug. Simply don't run the test. It could - means there is no such implementation or the object is already in - use in which case we don't want to disturb. */ - perror ("failed to create a shared memory object: shm_open"); - return 0; + /* If shm_open is unimplemented we skip the test. */ + if (errno == ENOSYS) + { + perror ("shm_open unimplemented. Test skipped."); + return 0; + } + else + error (EXIT_FAILURE, 0, "failed to create shared memory object: shm_open"); } /* Size the object. We make it 4000 bytes long. */ @@ -152,18 +146,18 @@ do_test (void) shared memory itself. */ perror ("failed to size of shared memory object: ftruncate"); close (fd); - shm_unlink ("/shm-test"); + shm_unlink ("/glibc-shm-test"); return 0; } if (fstat64 (fd, &st) == -1) { - shm_unlink ("/shm-test"); + shm_unlink ("/glibc-shm-test"); error (EXIT_FAILURE, 0, "initial stat failed"); } if (st.st_size != 4000) { - shm_unlink ("/shm-test"); + shm_unlink ("/glibc-shm-test"); error (EXIT_FAILURE, 0, "initial size not correct"); } @@ -176,7 +170,7 @@ do_test (void) /* Couldn't create a second process. */ perror ("fork"); close (fd); - shm_unlink ("/shm-test"); + shm_unlink ("/glibc-shm-test"); return 0; } @@ -191,7 +185,7 @@ do_test (void) kill (pid1, SIGTERM); waitpid (pid1, &ignore, 0); close (fd); - shm_unlink ("/shm-test"); + shm_unlink ("/glibc-shm-test"); return 0; } @@ -200,14 +194,14 @@ do_test (void) waitpid (pid2, &status2, 0); /* Now we can unlink the shared object. */ - shm_unlink ("/shm-test"); + shm_unlink ("/glibc-shm-test"); return (!WIFEXITED (status1) || WEXITSTATUS (status1) != 0 || !WIFEXITED (status2) || WEXITSTATUS (status2) != 0); } #define TEST_FUNCTION do_test () -#define CLEANUP_HANDLER shm_unlink ("/shm-test"); +#define CLEANUP_HANDLER shm_unlink ("/glibc-shm-test"); #include "../test-skeleton.c" |