summaryrefslogtreecommitdiff
path: root/tests/split
diff options
context:
space:
mode:
authorPádraig Brady <P@draigBrady.com>2012-06-22 09:32:34 +0100
committerPádraig Brady <P@draigBrady.com>2012-06-22 11:34:21 +0100
commitae5846448f73d90ba9bd01cc9edc94bc0b168e46 (patch)
tree86d73149007b304586c0d8604ab39d0436528089 /tests/split
parent30a604e631291b80b9812e03e0f325489ae0d77e (diff)
downloadcoreutils-ae5846448f73d90ba9bd01cc9edc94bc0b168e46.tar.xz
split: ensure output doesn't overwrite input
* src/split.c (create): Check if output file is the same inode as the input file. * tests/split/guard-input: New test case. * tests/Makefile.am: Reference new test case. * NEWS: Mention the fix. Improved-by: Jim Meyering Reported-by: François Pinard
Diffstat (limited to 'tests/split')
-rwxr-xr-xtests/split/guard-input33
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/split/guard-input b/tests/split/guard-input
new file mode 100755
index 000000000..7a6fba3f5
--- /dev/null
+++ b/tests/split/guard-input
@@ -0,0 +1,33 @@
+#!/bin/sh
+# ensure split doesn't overwrite input with output.
+
+# Copyright (C) 2012 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/>.
+
+. "${srcdir=.}/init.sh"; path_prepend_ ../src
+print_ver_ split
+
+seq 10 | tee exp-1 > xaa
+ln -s xaa in2
+ln xaa in3
+
+split -C 6 xaa && fail=1
+split -C 6 in2 && fail=1
+split -C 6 in3 && fail=1
+split -C 6 - < xaa && fail=1
+
+compare exp-1 xaa || fail=1
+
+Exit $fail