1
0
mirror of git://git.sv.gnu.org/coreutils.git synced 2026-05-24 11:20:24 +02:00
Files
coreutils/tests/misc/truncate-overflow
T
Pádraig Brady 75e0047c4b Add new program: truncate
* AUTHORS: Register as the author
* NEWS: Mention this change
* README: Add truncate command to list
* src/truncate.c: New command
* src/Makefile.am: Add truncate command to list to build
* src/.gitignore: Add truncate binary to list to ignore
* doc/coreutils.texi (truncate invocation): Add truncate info
* man/Makefile.am: Add truncate man page to list to build
* man/truncate.x: Add truncate man page template
* po/POTFILES.in: Add truncate to list to translate
* tests/Makefile.am: Add truncate tests
* tests/misc/help-version: Add support for new truncate command
* tests/misc/truncate-dangling-symlink: check dangling link ok
* tests/misc/truncate-dir-fail: ensure dirs fail
* tests/misc/truncate-fail-diag: validate messages for missing paths
* tests/misc/truncate-fifo: ensure fifos ignored
* tests/misc/truncate-no-create-missing: ensure -c option honoured
* tests/misc/truncate-overflow: check signed integer overflows
* tests/misc/truncate-owned-by-other: root permissions check
* tests/misc/truncate-parameters: check invalid parameter combinations
* tests/misc/truncate-relative: check invalid relative sizes
2008-06-06 14:16:45 +02:00

56 lines
1.5 KiB
Bash
Executable File

#!/bin/sh
# Validate truncate integer overflow
# Copyright (C) 2008 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
if test "$VERBOSE" = yes; then
set -x
truncate --version
fi
. $srcdir/test-lib.sh
fail=0
# -= overflow
truncate -s-1 create-zero-len-file || fail=1
echo > non-empty-file
truncate -s2147483648 -c no-such-file && _FILE_OFFSET_BITS=64
if [ $_FILE_OFFSET_BITS -eq 64 ]; then
# signed overflow
truncate -s9223372036854775808 file && fail=1
# *= signed overflow
truncate --io-blocks --size="1E" file && fail=1
# += signed overflow
truncate -s+9223372036854775807 non-empty-file && fail=1
else
# signed overflow
truncate -s2147483648 file && fail=1
# *= signed overflow
truncate --io-blocks --size="1G" file && fail=1
# += signed overflow
truncate -s+2147483647 non-empty-file && fail=1
fi
(exit $fail); exit $fail