#!/bin/sh # Test that we don't follow bind mounts when writing to .augsave. # This requires that EXDEV or EBUSY is returned from rename(2) to activate the # code path, so set up a bind mount on Linux. if [ "$UID" != 0 -o "$(uname -s)" != "Linux" ]; then echo "Test can only be run as root on Linux to create bind mounts" exit 77 fi actual() { (augtool --nostdinc -I $LENSES -r $ROOT --backup | grep ^/augeas) < $HOSTS touch $ATTACK_FILE $HOSTS_AUGSAVE mount --bind $ATTACK_FILE $HOSTS_AUGSAVE Exit() { umount $HOSTS_AUGSAVE exit $1 } ACTUAL=$(actual) EXPECTED=$(expected) if [ "$ACTUAL" != "$EXPECTED" ]; then echo "No error when trying to unlink augsave (a bind mount):" echo "$ACTUAL" exit 1 fi if [ -s $ATTACK_FILE ]; then echo "/other/attack now contains data, should be blank" Exit 1 fi Exit 0