[PATCH] tests: add fchmod.test
Dmitry V. Levin
ldv at altlinux.org
Thu Mar 10 00:30:36 UTC 2016
On Thu, Mar 10, 2016 at 12:09:22AM +0000, Fabien Siron wrote:
> * tests/fchmod.c: New file.
> * tests/fchmod.test: New test.
> * tests/.gitignore: Add fchmod.
> * tests/Makefile.am (check_PROGRAMS): Likewise.
> (TESTS): Add fchmod.test.
> ---
> tests/.gitignore | 1 +
> tests/Makefile.am | 2 ++
> tests/fchmod.c | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
> tests/fchmod.test | 11 ++++++++
> 4 files changed, 96 insertions(+)
> create mode 100644 tests/fchmod.c
> create mode 100755 tests/fchmod.test
>
> diff --git a/tests/.gitignore b/tests/.gitignore
> index c6a94d8..f212fde 100644
> --- a/tests/.gitignore
> +++ b/tests/.gitignore
> @@ -25,6 +25,7 @@ execve-v
> execveat
> execveat-v
> fanotify_mark
> +fchmod
> fcntl
> fcntl64
> file_handle
> diff --git a/tests/Makefile.am b/tests/Makefile.am
> index 92d3255..81b56e8 100644
> --- a/tests/Makefile.am
> +++ b/tests/Makefile.am
> @@ -75,6 +75,7 @@ check_PROGRAMS = \
> execveat \
> execveat-v \
> fanotify_mark \
> + fchmod \
> fcntl \
> fcntl64 \
> file_handle \
> @@ -239,6 +240,7 @@ TESTS = \
> execveat.test \
> execveat-v.test \
> fanotify_mark.test \
> + fchmod.test \
> fcntl.test \
> fcntl64.test \
> file_handle.test \
> diff --git a/tests/fchmod.c b/tests/fchmod.c
> new file mode 100644
> index 0000000..192c8c3
> --- /dev/null
> +++ b/tests/fchmod.c
> @@ -0,0 +1,82 @@
> +/*
> + * Copyright (c) 2016 Fabien Siron <fabien.siron at epita.fr>
> + * All rights reserved.
> + *
> + * Redistribution and use in source and binary forms, with or without
> + * modification, are permitted provided that the following conditions
> + * are met:
> + * 1. Redistributions of source code must retain the above copyright
> + * notice, this list of conditions and the following disclaimer.
> + * 2. Redistributions in binary form must reproduce the above copyright
> + * notice, this list of conditions and the following disclaimer in the
> + * documentation and/or other materials provided with the distribution.
> + * 3. The name of the author may not be used to endorse or promote products
> + * derived from this software without specific prior written permission.
> + *
> + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
> + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
> + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
> + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
> + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
> + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
> + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
> + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
> + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
> + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
> + */
> +
> +#include "tests.h"
> +#include <sys/syscall.h>
> +
> +#if defined __NR_fchmod
> +
> +#include <fcntl.h>
> +#include <sys/stat.h>
> +#include <stdio.h>
> +#include <unistd.h>
> +#include <errno.h>
> +
> +int
> +main(void)
> +{
> + static const char fname[] = "fchmod_test_file";
> +
> + int fd = open(fname, O_CREAT|O_RDONLY, 0x400);
File access permissions are usually specified in octal form,
0x400 looks like a typo.
> + if (fd == -1)
> + perror_msg_and_fail("open");
> +
> + int fchmod_res = syscall(__NR_fchmod, fd, 0600);
> +
> + if (fchmod_res == 0) {
> + printf("fchmod(%i, 0600) = 0\n", fd);
In strace we prefer to use %d instead of %i.
> + } else {
> + if (errno == ENOSYS) {
> + printf("fchmod(%i, 0600) = -1 ENOSYS (%m)\n", fd);
> + } else {
> + perror_msg_and_fail("fchmod");
> + }
> + }
> +
> + if (unlink(fname) == -1)
> + perror_msg_and_fail("unlink");
Unlike chmod, fchmod doesn't need a file name, so you can unlink
the file as soon as you've got the descriptor.
This would open the way for further simplification of the test.
--
ldv
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.strace.io/pipermail/strace-devel/attachments/20160310/d17f76eb/attachment.bin>
More information about the Strace-devel
mailing list