~ubuntu-branches/ubuntu/trusty/ecryptfs-utils/trusty

« back to all changes in this revision

Viewing changes to tests/kernel/read-dir/test.c

  • Committer: Package Import Robot
  • Author(s): Dustin Kirkland, Dustin Kirkland, Tyler Hicks, Eddie Garcia, Colin King
  • Date: 2012-02-16 14:22:09 UTC
  • mfrom: (1.1.41)
  • Revision ID: package-import@ubuntu.com-20120216142209-n1r1a7dwbbq49xzs
Tags: 96-0ubuntu1
[ Dustin Kirkland ]
* CONTRIBUTING:
  - added a new file to describe how to contribute to ecryptfs
* === added directory img/old, img/old/ecryptfs_14.png,
  img/old/ecryptfs_192.png, img/old/ecryptfs_64.png:
  - saving the old logos/branding for posterity
* debian/copyright, img/COPYING:
  - added CC-by-SA 3.0 license
  - use the text version
* img/ecryptfs_14.png, img/ecryptfs_192.png, img/ecryptfs_64.png:
  - added scaled copies of images used for Launchpad.net branding
* src/utils/ecryptfs-recover-private: LP: #847505
  - add an option to allow user to enter the mount passphrase,
    in case they've recorded that, but forgotten their login
    passphrase
* src/libecryptfs/sysfs.c: LP: #802197
  - default sysfs to /sys, if not found in /etc/mtab
  - it seems that reading /etc/mtab for this is outdated
  - ensure that ecryptfs works even if there is no sysfs entry
    in /etc/mtab
* src/key_mod/ecryptfs_key_mod_tspi.c: LP: #462225
  - fix TPM and string_to_uuid 64bits issue
  - thanks to Janos for the patch
* precise

[ Tyler Hicks ]
* CONTRIBUTING:
  - clarified how to contribute to the ecryptfs kernel module
* tests/lib/etl_funcs.sh:
  - created eCryptfs test library of bash functions for use in test
    cases and test harnesses
* test/etl_add_passphrase_key_to_keyring.c:
  - created a C helper program to allow bash scripts to interface to
    the libecryptfs function that adds passphrase-based keys to the
    kernel keyring
* tests/kernel/tests.rc, tests/userspace/tests.rc:
  - created a test case category files for test harnesses to source
    when running testcases of a certain category (destructive, safe,
    etc.)
* tests/run_tests.sh:
  - created a test harness to run eCryptfs test cases
* tests/kernel/miscdev-bad-count.sh,
  tests/kernel/miscdev-bad-count/test.c:
  - created test case for miscdev issue reported to mailing list
* tests/kernel/lp-885744.sh:
  - created test case for pathconf bug
* tests/kernel/lp-926292.sh:
  - created test case for checking stale inode attrs after setxattr
* tests/new.sh:
  - created new test case template to copy from
* tests/userspace/verify-passphrase-sig.sh,
  tests/userspace/verify-passphrase-sig/test.c:
  - created test case, for make check, to test the creation of
    passphrase-based fekeks and signatures
* configure.ac, Makefile.am, tests/Makefile.am, tests/lib/Makefile.am,
  tests/kernel/Makefile.am, tests/userspace/Makefile.am:
  - updated and created autoconf/automake files to build the new tests
    directory
  - added make check target

[ Eddie Garcia ]
* img/*: LP: #907131
  - contributing a new set of logos and branding under the CC-by-SA3.0
    license

[ Colin King ]
* tests/kernel/extend-file-random.sh,
  tests/kernel/extend-file-random/test.c:
  - Test to randomly extend file size, read/write + unlink
* tests/kernel/trunc-file.sh, tests/kernel/trunc-file/test.c:
  - Test to exercise file truncation
* tests/kernel/directory-concurrent.sh,
  tests/kernel/directory-concurrent/test.c:
  - test for directory creation/deletion races with multiple processes
* tests/kernel/file-concurrent.sh,
  tests/kernel/file-concurrent/test.c:
  - test for file creation/truncation/unlink races with multiple
    processes
* tests/kernel/inotify.sh, tests/kernel/inotify/test.c:
  - test for proper inotify support
* tests/kernel/mmap-dir.sh, tests/kernel/mmap-dir/test.c:
  - test that directory files cannot be mmap'ed
* tests/kernel/read-dir.sh, tests/kernel/read-dir/test.c:
  - test that read() on directory files returns the right error
* tests/kernel/setattr-flush-dirty.sh:
  - test that the modified timestamp isn't clobbered in writeback
* tests/kernel/inode-race-stat.sh, tests/kernel/inode-race-stat/test.c:
  - test for inode initialization race condition

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Author: Colin King <colin.king@canonical.com>
 
3
 *
 
4
 * Copyright (C) 2012 Canonical, Ltd.
 
5
 *
 
6
 * This program is free software; you can redistribute it and/or
 
7
 * modify it under the terms of the GNU General Public License
 
8
 * as published by the Free Software Foundation; either version 2
 
9
 * of the License, or (at your option) any later version.
 
10
 *
 
11
 * This program is distributed in the hope that it will be useful,
 
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
14
 * GNU General Public License for more details.
 
15
 *
 
16
 * You should have received a copy of the GNU General Public License
 
17
 * along with this program; if not, write to the Free Software
 
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
 
19
 */
 
20
 
 
21
#include <unistd.h>
 
22
#include <stdio.h>
 
23
#include <stdlib.h>
 
24
#include <string.h>
 
25
#include <errno.h>
 
26
#include <fcntl.h>
 
27
#include <sys/mman.h>
 
28
#include <sys/types.h>
 
29
#include <sys/stat.h>
 
30
#include <limits.h>
 
31
 
 
32
#define TEST_PASSED     (0)
 
33
#define TEST_FAILED     (1)
 
34
#define TEST_ERROR      (2)
 
35
 
 
36
#define BUFF_SIZE       (4096)
 
37
 
 
38
/*
 
39
 *  https://bugs.launchpad.net/ubuntu/+source/linux/+bug/719691
 
40
 *
 
41
 *  read() on a directory should return EISDIR, but bug LP: #719691
 
42
 *  ecryptfs returns EINVAL in contradiction to SUSv2.
 
43
 */
 
44
int main(int argc, char **argv)
 
45
{
 
46
        int fd;
 
47
        int ret;
 
48
        char path[PATH_MAX];
 
49
        char buff[BUFF_SIZE];
 
50
 
 
51
        if (argc < 2) {
 
52
                fprintf(stderr, "Usage: path\n");
 
53
                exit(TEST_ERROR);
 
54
        }
 
55
        snprintf(path, sizeof(path), "%s/.", argv[1]);
 
56
 
 
57
        if ((fd = open(path, O_RDONLY)) < 0) {
 
58
                fprintf(stderr, "Cannot open ./. : %s\n", strerror(errno));
 
59
                exit(TEST_ERROR);
 
60
        }
 
61
 
 
62
        ret = read(fd, buff, sizeof(buff));
 
63
        if (ret >= 0) {
 
64
                /* Should not be abled to read a directory */
 
65
                fprintf(stderr, "read() on a directory should fail, but did not\n");
 
66
                close(fd);
 
67
                exit(TEST_FAILED);
 
68
        }
 
69
 
 
70
        if (errno != EISDIR) {
 
71
                fprintf(stderr, "read() on a directory should set errno to EISDIR, "
 
72
                        "instead got: %d - %s\n", errno, strerror(errno));
 
73
                close(fd);
 
74
                exit(TEST_FAILED);
 
75
        }
 
76
 
 
77
        close(fd);
 
78
        exit(TEST_PASSED);
 
79
}