diff options
author | Tom Marshall <tdm@cyngn.com> | 2016-02-10 00:01:41 -0500 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2016-02-10 22:34:51 -0600 |
commit | 28711d308d9d70801ac0c9552df834ddafff2385 (patch) | |
tree | a11eba94f171a30a44d139f43e2d2a505a9e9170 /tests/tar.test | |
parent | 5b61086cac812b60d21e8cfe0e74920f791bc5bc (diff) | |
download | toybox-28711d308d9d70801ac0c9552df834ddafff2385.tar.gz |
toybox: tar: Fix support for long names
Pathnames may be longer than the name field in the header, so use
strncpy() instead of xstrncpy() to avoid bailing out.
Also add unit tests to ensure proper handling of short and long
pathnames.
Change-Id: Id025891993746889564b479e5185cf9721b54a55
Diffstat (limited to 'tests/tar.test')
-rwxr-xr-x | tests/tar.test | 17 |
1 files changed, 17 insertions, 0 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" "" "" |