summaryrefslogtreecommitdiff
path: root/testprogs
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2020-03-03 12:36:42 +1300
committerAndrew Bartlett <abartlet@samba.org>2020-03-22 04:39:36 +0000
commit1f65f211699714154ac01f2271cd11025ced7b81 (patch)
tree3f2ee0ca6af3d2967f7f15a51f8fadaa24ffe946 /testprogs
parent83ff052777245d785046b09fbe73dd4deb2cd099 (diff)
downloadsamba-1f65f211699714154ac01f2271cd11025ced7b81.tar.gz
selftest: Add test for dangling backlinks to objects that do not exist
BUG: https://bugzilla.samba.org/show_bug.cgi?id=14306 Signed-off-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Andreas Schneider <asn@samba.org>
Diffstat (limited to 'testprogs')
-rwxr-xr-xtestprogs/blackbox/dbcheck-links.sh47
1 files changed, 47 insertions, 0 deletions
diff --git a/testprogs/blackbox/dbcheck-links.sh b/testprogs/blackbox/dbcheck-links.sh
index d82d0b1dabc..450faaf594e 100755
--- a/testprogs/blackbox/dbcheck-links.sh
+++ b/testprogs/blackbox/dbcheck-links.sh
@@ -777,6 +777,52 @@ EOF
fi
}
+dangling_link_to_unknown_does_not_prevent_delete() {
+
+ #
+ # Step1: add user "dangling"
+ #
+ ldif=$PREFIX_ABS/${RELEASE}/backlink_can_be_vanished1.ldif
+ dn='CN=dangling-for-vanish,CN=users,DC=release-4-5-0-pre1,DC=samba,DC=corp'
+ cat > $ldif <<EOF
+dn: $dn
+changetype: add
+objectclass: user
+samaccountname: dangling-v
+objectGUID: a4090081-ac2a-410c-8924-b255375160e8
+EOF
+
+ out=$(TZ=UTC $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb --relax $ldif)
+ if [ "$?" != "0" ]; then
+ echo "ldbmodify returned:\n$out"
+ return 1
+ fi
+
+ #
+ # Step2: add a dangling backlink from
+ # "CN=dangling-for-vanish" to "CN=NOT Enterprise Admins"
+ #
+ ldif=$PREFIX_ABS/${RELEASE}/backlink_can_be_vanished2.ldif
+ {
+ echo "dn: $dn"
+ echo "changetype: modify"
+ echo "add: memberOf"
+ echo "memberOf: <GUID=09a47bff-0227-44e1-a8e4-63f9e726515d>;<SID=S-1-5-21-4177067393-1453636373-93818738-588>;CN=NOT Enterprise Admins,CN=Users,DC=release-4-5-0-pre1,DC=samba,DC=corp"
+ } > $ldif
+
+ out=$(TZ=UTC $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb.d/DC%3DRELEASE-4-5-0-PRE1,DC%3DSAMBA,DC%3DCORP.ldb $ldif)
+ if [ "$?" != "0" ]; then
+ echo "ldbmodify returned:\n$out"
+ return 1
+ fi
+
+ out=$(TZ=UTC $ldbdel -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb "$dn")
+ if [ "$?" != "0" ]; then
+ echo "ldbdel returned:\n$out"
+ return 1
+ fi
+}
+
if [ -d $release_dir ]; then
testit $RELEASE undump
testit "add_two_more_users" add_two_more_users
@@ -837,6 +883,7 @@ if [ -d $release_dir ]; then
# Currently this cannot pass
testit "dbcheck_dangling_multi_valued_clean" dbcheck_clean
testit "dangling_link_does_not_prevent_delete" dangling_link_does_not_prevent_delete
+ testit "dangling_link_to_unknown_does_not_prevent_delete" dangling_link_to_unknown_does_not_prevent_delete
else
subunit_start_test $RELEASE
subunit_skip_test $RELEASE <<EOF