diff options
-rwxr-xr-x | tests/tar.test | 17 | ||||
-rw-r--r-- | toys/pending/tar.c | 2 |
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); |