]> git.pld-linux.org Git - packages/parted.git/blob - 0030-tests-t3000-resize-fs.sh-Add-very-deep-directory.patch
- rel 4; tons of patches from FC
[packages/parted.git] / 0030-tests-t3000-resize-fs.sh-Add-very-deep-directory.patch
1 From 599ce25c802fc1154ed619fde4249bb381430407 Mon Sep 17 00:00:00 2001
2 From: Mike Fleetwood <mike.fleetwood@googlemail.com>
3 Date: Sun, 28 Feb 2016 15:36:11 +0000
4 Subject: [PATCH 30/30] tests: t3000-resize-fs.sh: Add very deep directory
5
6 Create 500 deep directory tree, with longest name of 4000 characters, to
7 the file system being resized to test the fix to prevent crash when
8 resizing a FAT file system with such a long path.
9 ---
10  tests/t3000-resize-fs.sh | 16 ++++++++++++++++
11  1 file changed, 16 insertions(+)
12
13 diff --git a/tests/t3000-resize-fs.sh b/tests/t3000-resize-fs.sh
14 index a79a307..608871c 100755
15 --- a/tests/t3000-resize-fs.sh
16 +++ b/tests/t3000-resize-fs.sh
17 @@ -46,6 +46,13 @@ device_sectors_required=$(echo $default_end | sed 's/s$//')
18  # Ensure that $dev is large enough for this test
19  test $device_sectors_required -le $dev_n_sectors || fail=1
20  
21 +# create mount point dir
22 +mount_point="`pwd`/mnt"
23 +mkdir "$mount_point" || fail=1
24 +
25 +# be sure to unmount upon interrupt, failure, etc.
26 +cleanup_fn_() { umount "${dev}1" > /dev/null 2>&1; }
27 +
28  for fs_type in hfs+ fat32 fat16; do
29    echo "fs_type=$fs_type"
30  
31 @@ -69,6 +76,15 @@ for fs_type in hfs+ fat32 fat16; do
32    # create the file system
33    $mkfs_cmd ${dev}1 || fail=1
34  
35 +  # create 500 deep directory tree with longest name 4000 characters
36 +  # to catch core dump in libparted/fs/r/fat/count.c flag_traverse_dir()
37 +  # overflowing 512 byte file_name local buffer.
38 +  mount "${dev}1" "$mount_point" || fail=1
39 +  cat /dev/null > exp
40 +  ( cd "$mount_point"; for d in `seq 500`; do mkdir TESTDIR; cd TESTDIR; done ) > out
41 +  compare exp out || fail=1   # Ensure no errors creating directory tree
42 +  umount "${dev}1" || fail=1
43 +
44    # NOTE: shrinking is the only type of resizing that works.
45    # resize that file system to be one cylinder (8MiB) smaller
46    fs-resize ${dev}1 0 $new_end > out 2>&1 || fail=1
47 -- 
48 2.5.0
49
This page took 0.080553 seconds and 3 git commands to generate.