make the link subset test livable

This commit is contained in:
John Johansen 2007-12-23 01:07:16 +00:00
parent 7742386a84
commit 5d51c46fd6
2 changed files with 2 additions and 68 deletions

View file

@ -33,6 +33,7 @@ SRC=access.c \
fchown.c \ fchown.c \
fork.c \ fork.c \
link.c \ link.c \
link_subset.c \
mmap.c \ mmap.c \
mkdir.c \ mkdir.c \
mount.c \ mount.c \
@ -118,6 +119,7 @@ TESTS=access \
fork \ fork \
i18n \ i18n \
link \ link \
link_subset \
mkdir \ mkdir \
mmap \ mmap \
mount \ mount \

View file

@ -31,40 +31,6 @@ badperm=rwl
nolinkperm=rwix nolinkperm=rwix
#test for $1 in $2
function perm_is_subset () {
# zero length substring always matches
if [ -z $1 ] ; then
echo $2;
return 0;
fi
case "$2" in
*$1*) echo ${2##${2/$1*/}}; return 0;;
esac
#handle the special cases
#ix implies mix
local target=${2/ix/mix}
case "$target" in
*$1*) echo ${target##${target/$1*/}}; return 0;;
esac
# treat safe PUx as subset of unsafe pux
local linkfile=${1/Px/px}
linkfile=${linkfile/Ux/ux}
case "$target" in
*$linkfile*) echo ${target##${target/$linkfile*/}}; return 0;
esac
# permute rw to do string match of rm rwm
target=${target/rw/wr}
case "$target" in
*$1*) echo ${target##${target/$linkfile*/}}; return 0;;
esac
}
PERMS="r w m ix px ux Px Ux l rw rm rix rpx rux rPx rUx rl wm wix wpx wux \ PERMS="r w m ix px ux Px Ux l rw rm rix rpx rux rPx rUx rl wm wix wpx wux \
wPx wUx wl mix mpx mux mPx mUx ml ixl pxl uxl Pxl Uxl rwm rwix rwpx \ wPx wUx wl mix mpx mux mPx mUx ml ixl pxl uxl Pxl Uxl rwm rwix rwpx \
rwux rwPx rwUx rwl rmix rmpx rmux rmPx rmUx rml wmix wmpx wmux wmPx \ rwux rwPx rwUx rwl rmix rmpx rmux rmPx rmUx rml wmix wmpx wmux wmPx \
@ -91,37 +57,3 @@ touch $target
runchecktest "link (no perms) -> target (no perms)" fail $target $linkfile runchecktest "link (no perms) -> target (no perms)" fail $target $linkfile
rm -rf $linkfile rm -rf $linkfile
# link no perms
for TARGET_PERM in ${PERMS} ; do
genprofile $target:$TARGET_PERM
runchecktest "link (no perms) -> target ($TARGET_PERM)" fail $target $linkfile
rm -rf $linkfile
done
# target no perms
for LINK_PERM in ${PERMS} ; do
genprofile $linkfile:$LINK_PERM
runchecktest "link ($LINK_PERM) -> target (no perms)" fail $target $linkfile
rm -rf $linkfile
done
# all other combination of perms
for LINK_PERM in ${PERMS} ; do
for TARGET_PERM in ${PERMS} ; do
l_in_perms=${LINK_PERM/*l/l}
perms_no_link=${LINK_PERM/l/}
link_subset=`perm_is_subset ${perms_no_link} ${TARGET_PERM}`
if [ "$l_in_perms" == "l" -a -n "$perms_no_link" -a -n "$link_subset" ]
then
expected_result=pass
else
expected_result=fail
fi
#echo "testing $LINK_PERM -> $TARGET_PERM = $l_in_perms, $perms_no_link, $link_subset $expected_result"
genprofile $linkfile:$LINK_PERM $target:$TARGET_PERM
runchecktest "link ($LINK_PERM) -> target ($TARGET_PERM)" ${expected_result} $target $linkfile
rm -rf $linkfile
done
done