#! /bin/sh # $OpenLDAP$ ## This work is part of OpenLDAP Software <http://www.openldap.org/>. ## ## Copyright 1998-2019 The OpenLDAP Foundation. ## All rights reserved. ## ## Redistribution and use in source and binary forms, with or without ## modification, are permitted only as authorized by the OpenLDAP ## Public License. ## ## A copy of this license is available in the file LICENSE in the ## top-level directory of the distribution or, alternatively, at ## <http://www.OpenLDAP.org/license.html>. echo "running defines.sh" . $SRCDIR/scripts/defines.sh mkdir -p $TESTDIR $DBDIR1 $SLAPPASSWD -g -n >$CONFIGPWF echo "rootpw `$SLAPPASSWD -T $CONFIGPWF`" >$TESTDIR/configpw.conf echo "Running slapadd to build slapd database..." . $CONFFILTER $BACKEND $MONITORDB < $UNDOCONF > $CONF1 $SLAPADD -f $CONF1 <<EOF dn: o=undo objectClass: organization o: undo EOF RC=$? if test $RC != 0 ; then echo "slapadd failed ($RC)!" exit $RC fi echo "Starting slapd on TCP/IP port $PORT1..." mkdir $TESTDIR/confdir $SLAPD -f $CONF1 -F $TESTDIR/confdir -h $URI1 -d $LVL $TIMING > $LOG1 2>&1 & PID=$! if test $WAIT != 0 ; then echo PID $PID read foo fi KILLPIDS="$PID" sleep 1 for i in 0 1 2 3 4 5; do $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT1 \ 'objectclass=*' > /dev/null 2>&1 RC=$? if test $RC = 0 ; then break fi echo "Waiting 5 seconds for slapd to start..." sleep 5 done if test $RC != 0 ; then echo "ldapsearch failed ($RC)!" test $KILLSERVERS != no && kill -HUP $KILLPIDS exit $RC fi echo Dynamically assaulting the schema $LDAPMODIFY -D cn=config -h $LOCALHOST -p $PORT1 -y $CONFIGPWF \ > $TESTOUT 2>&1 <<EOF dn: cn={0}core,cn=schema,cn=config changetype: modify replace: olcObjectClasses olcObjectClasses: ( rawr ) - EOF RC=$? if test $RC != 80 ; then echo "invalid objectclass modify allowed ($RC)" test $KILLSERVERS != no && kill -HUP $KILLPIDS exit -1 fi $LDAPMODIFY -D cn=config -h $LOCALHOST -p $PORT1 -y $CONFIGPWF \ > $TESTOUT 2>&1 <<EOF dn: cn={0}core,cn=schema,cn=config changetype: modify replace: olcAttributeTypes olcAttributeTypes: ( rawr ) - EOF RC=$? if test $RC != 80 ; then echo "invalid attributeType modify allowed ($RC)" test $KILLSERVERS != no && kill -HUP $KILLPIDS exit -1 fi echo Surveying the damage $LDAPMODIFY -D "cn=manager,o=undo" -w secret -h $LOCALHOST -p $PORT1 <<EOF dn: o=foo,o=undo changetype: add objectClass: organization o: foo EOF RC=$? if test $RC != 0 ; then echo "schema destroyed by an unsuccessful operation" test $KILLSERVERS != no && kill -HUP $KILLPIDS exit -1 fi test $KILLSERVERS != no && kill -HUP $KILLPIDS echo ">>>>> Test succeeded" test $KILLSERVERS != no && wait exit 0