tests: add ftruncate.test and truncate.test
* tests/ftruncate.c: New file. * tests/truncate.c: Likewise. * tests/ftruncate.test: New test. * tests/truncate.test: Likewise. * tests/Makefile.am (check_PROGRAMS): Add ftruncate and truncate. (TESTS): Add ftruncate.test and truncate.test. * tests/.gitignore: Add ftruncate and truncate.
This commit is contained in:
parent
170a4cfe1c
commit
c1bb87a99d
2
tests/.gitignore
vendored
2
tests/.gitignore
vendored
@ -11,6 +11,7 @@ execveat
|
||||
fanotify_mark
|
||||
file_handle
|
||||
filter-unavailable
|
||||
ftruncate
|
||||
getdents
|
||||
getdents64
|
||||
getrandom
|
||||
@ -66,6 +67,7 @@ timer_xettime
|
||||
timerfd_xettime
|
||||
times
|
||||
times-fail
|
||||
truncate
|
||||
uid
|
||||
uid16
|
||||
uid32
|
||||
|
@ -24,6 +24,7 @@ check_PROGRAMS = \
|
||||
fanotify_mark \
|
||||
file_handle \
|
||||
filter-unavailable \
|
||||
ftruncate \
|
||||
getdents \
|
||||
getdents64 \
|
||||
getrandom \
|
||||
@ -79,6 +80,7 @@ check_PROGRAMS = \
|
||||
timerfd_xettime \
|
||||
times \
|
||||
times-fail \
|
||||
truncate \
|
||||
uid \
|
||||
uid16 \
|
||||
uid32 \
|
||||
@ -126,6 +128,7 @@ TESTS = \
|
||||
fanotify_mark.test \
|
||||
file_handle.test \
|
||||
filter-unavailable.test \
|
||||
ftruncate.test \
|
||||
getdents.test \
|
||||
getdents64.test \
|
||||
getrandom.test \
|
||||
@ -179,6 +182,7 @@ TESTS = \
|
||||
timerfd_xettime.test \
|
||||
times.test \
|
||||
times-fail.test \
|
||||
truncate.test \
|
||||
umovestr.test \
|
||||
umovestr2.test \
|
||||
unix-yy.test \
|
||||
|
71
tests/ftruncate.c
Normal file
71
tests/ftruncate.c
Normal file
@ -0,0 +1,71 @@
|
||||
/*
|
||||
* Copyright (c) 2015 Dmitry V. Levin <ldv@altlinux.org>
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include "config.h"
|
||||
#endif
|
||||
|
||||
#include <sys/syscall.h>
|
||||
|
||||
#ifdef __NR_ftruncate
|
||||
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "kernel_types.h"
|
||||
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
const kernel_ulong_t len = (kernel_ulong_t) 0xdefaced0badc0deULL;
|
||||
int rc;
|
||||
|
||||
if (sizeof(len) > sizeof(long))
|
||||
rc = ftruncate(-1, len);
|
||||
else
|
||||
rc = syscall(__NR_ftruncate, -1L, len);
|
||||
|
||||
if (rc != -1 || EBADF != errno)
|
||||
return 77;
|
||||
|
||||
printf("ftruncate(-1, %Lu) = -1 EBADF (Bad file descriptor)\n",
|
||||
(unsigned long long) len);
|
||||
|
||||
puts("+++ exited with 0 +++");
|
||||
return 0;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
return 77;
|
||||
}
|
||||
|
||||
#endif
|
13
tests/ftruncate.test
Executable file
13
tests/ftruncate.test
Executable file
@ -0,0 +1,13 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Check ftruncate syscall decoding.
|
||||
|
||||
. "${srcdir=.}/init.sh"
|
||||
|
||||
run_prog > /dev/null
|
||||
OUT="$LOG.out"
|
||||
run_strace -a24 -eftruncate $args > "$OUT"
|
||||
match_diff "$LOG" "$OUT"
|
||||
rm -f "$OUT"
|
||||
|
||||
exit 0
|
73
tests/truncate.c
Normal file
73
tests/truncate.c
Normal file
@ -0,0 +1,73 @@
|
||||
/*
|
||||
* Copyright (c) 2015 Dmitry V. Levin <ldv@altlinux.org>
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include "config.h"
|
||||
#endif
|
||||
|
||||
#include <sys/syscall.h>
|
||||
|
||||
#ifdef __NR_truncate
|
||||
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "kernel_types.h"
|
||||
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
static const char fname[] = "truncate\nfilename";
|
||||
static const char qname[] = "truncate\\nfilename";
|
||||
const kernel_ulong_t len = (kernel_ulong_t) 0xdefaced0badc0deULL;
|
||||
int rc;
|
||||
|
||||
if (sizeof(len) > sizeof(long))
|
||||
rc = truncate(fname, len);
|
||||
else
|
||||
rc = syscall(__NR_truncate, fname, len);
|
||||
|
||||
if (rc != -1 || ENOENT != errno)
|
||||
return 77;
|
||||
|
||||
printf("truncate(\"%s\", %Lu) = -1 ENOENT (No such file or directory)\n",
|
||||
qname, (unsigned long long) len);
|
||||
|
||||
puts("+++ exited with 0 +++");
|
||||
return 0;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
return 77;
|
||||
}
|
||||
|
||||
#endif
|
13
tests/truncate.test
Executable file
13
tests/truncate.test
Executable file
@ -0,0 +1,13 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Check truncate syscall decoding.
|
||||
|
||||
. "${srcdir=.}/init.sh"
|
||||
|
||||
run_prog > /dev/null
|
||||
OUT="$LOG.out"
|
||||
run_strace -etruncate $args > "$OUT"
|
||||
match_diff "$LOG" "$OUT"
|
||||
rm -f "$OUT"
|
||||
|
||||
exit 0
|
Loading…
Reference in New Issue
Block a user