diff options
author | Pascal Terjan <pterjan@google.com> | 2014-02-09 23:39:20 +0000 |
---|---|---|
committer | Stef Walter <stef@thewalter.net> | 2014-02-13 08:23:16 +0100 |
commit | 44beedb8c2b4e30b421b604fb1b044402a1d1ff6 (patch) | |
tree | 6cd39093cdf428f8d01e650cd862d86dd64c0219 /common/tests | |
parent | c59a6b577b7ba1990a7dc04a894c3bc4f4671471 (diff) |
Fix handling of mmap failure and mapping empty files
Check the return value of mmap() correctly.
Empty files cannot be mmap'd so we implement some
work around code for that.
https://bugs.freedesktop.org/show_bug.cgi?id=74773
Signed-off-by: Stef Walter <stef@thewalter.net>
Diffstat (limited to 'common/tests')
-rw-r--r-- | common/tests/test-compat.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/common/tests/test-compat.c b/common/tests/test-compat.c index 872170d..42471ae 100644 --- a/common/tests/test-compat.c +++ b/common/tests/test-compat.c @@ -83,6 +83,22 @@ test_getauxval (void) free (path); } +static void +test_mmap (void) +{ + p11_mmap *map; + void *data; + size_t size; + char file[] = "emptyfileXXXXXX"; + int fd = mkstemp (file); + close (fd); + /* mmap on empty file should work */ + map = p11_mmap_open (file, NULL, &data, &size); + unlink (file); + assert_ptr_not_null (map); + p11_mmap_close (map); +} + #endif /* OS_UNIX */ int @@ -95,6 +111,7 @@ main (int argc, if (!getenv ("FAKED_MODE")) { p11_test (test_getauxval, "/compat/getauxval"); } + p11_test (test_mmap, "/compat/mmap"); #endif return p11_test_run (argc, argv); } |