aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xtests/tar.test17
-rw-r--r--toys/pending/tar.c2
2 files changed, 18 insertions, 1 deletions
diff --git a/tests/tar.test b/tests/tar.test
index 872e7c02..5b10b014 100755
--- a/tests/tar.test
+++ b/tests/tar.test
@@ -71,3 +71,20 @@ rm -rf temp_dir
mkdir dir/dir1 -p
echo "Inside dir/dir1" > dir/dir1/file ; echo "Hello Inside dir" > dir/file
testing "Extraction on STDOUT : -O" " tar -czf dir.tgz dir/ ; rm -rf dir ; tar -xf dir.tgz -O ; [ -e 'Inside dir/dir1/\nHello Inside dir\n' ] && echo 'yes'; rm -rf dir.tgz " "" "" ""
+
+#Creating short filename
+f="filename_with_100_chars_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+echo "This is testdata" > $f
+testing "tar shortname filename" "tar -cf testFile.tar $f && [ -e testFile.tar ] && echo 'yes'; rm -f $f; tar -xf testFile.tar && [ -f $f ] && cat $f && strings testFile.tar | grep -o LongLink; rm -f testFile.tar; rm -f $f" "yes\nThis is testdata\n" "" ""
+
+#Creating long filename
+f="filename_with_101_chars_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+echo "This is testdata" > $f
+testing "tar longname filename" "tar -cf testFile.tar $f && [ -e testFile.tar ] && echo 'yes'; rm -f $f; tar -xf testFile.tar && [ -f $f ] && cat $f && strings testFile.tar | grep -o LongLink; rm -f testFile.tar; rm -f $f" "yes\nThis is testdata\nLongLink\n" "" ""
+
+#Creating long pathname
+d="dirname_with_50_chars_xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+f="filename_with_50_chars_xxxxxxxxxxxxxxxxxxxxxxxxxxx"
+mkdir $d
+echo "This is testdata" > $d/$f
+testing "tar longname pathname" "tar -cf testFile.tar $d/$f && [ -e testFile.tar ] && echo 'yes'; rm -rf $d; tar -xf testFile.tar && [ -f $d/$f ] && cat $d/$f && strings testFile.tar | grep -o LongLink; rm -f testFile.tar; rm -rf $d" "yes\nThis is testdata\nLongLink\n" "" ""
diff --git a/toys/pending/tar.c b/toys/pending/tar.c
index 6140ea5d..4f4de0b5 100644
--- a/toys/pending/tar.c
+++ b/toys/pending/tar.c
@@ -190,7 +190,7 @@ static void add_file(struct archive_handler *tar, char **nam, struct stat *st)
}
memset(&hdr, 0, sizeof(hdr));
- xstrncpy(hdr.name, hname, sizeof(hdr.name));
+ strncpy(hdr.name, hname, sizeof(hdr.name));
itoo(hdr.mode, sizeof(hdr.mode), st->st_mode &07777);
itoo(hdr.uid, sizeof(hdr.uid), st->st_uid);
itoo(hdr.gid, sizeof(hdr.gid), st->st_gid);