mirror of
https://github.com/samba-team/samba.git
synced 2025-01-12 09:18:10 +03:00
r19273: - fixed error handling with the ldap backend
- propogate errors to the ldbadd command line tool - use the rdn_name module when testing the tdb backend to allow the same test code to correctly test the ldap and non-ldap backends
This commit is contained in:
parent
0546f487f4
commit
dd82c474a1
@ -497,9 +497,11 @@ static int lldb_parse_result(struct ldb_handle *handle, LDAPMessage *result)
|
||||
char **referralsp = NULL;
|
||||
LDAPControl **serverctrlsp = NULL;
|
||||
int ret = LDB_SUCCESS;
|
||||
|
||||
|
||||
type = ldap_msgtype(result);
|
||||
|
||||
handle->status = 0;
|
||||
|
||||
switch (type) {
|
||||
|
||||
case LDAP_RES_SEARCH_ENTRY:
|
||||
@ -631,15 +633,19 @@ static int lldb_parse_result(struct ldb_handle *handle, LDAPMessage *result)
|
||||
}
|
||||
|
||||
if (matcheddnp) ldap_memfree(matcheddnp);
|
||||
if (errmsgp) {
|
||||
if (errmsgp && *errmsgp) {
|
||||
ldb_set_errstring(ac->module->ldb, errmsgp);
|
||||
} else if (handle->status) {
|
||||
ldb_set_errstring(ac->module->ldb, ldap_err2string(handle->status));
|
||||
}
|
||||
if (errmsgp) {
|
||||
ldap_memfree(errmsgp);
|
||||
}
|
||||
if (referralsp) ldap_value_free(referralsp);
|
||||
if (serverctrlsp) ldap_controls_free(serverctrlsp);
|
||||
|
||||
ldap_msgfree(result);
|
||||
return ret;
|
||||
return lldb_ldap_to_ldb(handle->status);
|
||||
|
||||
error:
|
||||
handle->state = LDB_ASYNC_DONE;
|
||||
|
@ -10,6 +10,12 @@ echo "LDB_URL: $LDB_URL"
|
||||
echo "Adding base elements"
|
||||
$VALGRIND ldbadd $LDBDIR/tests/test.ldif || exit 1
|
||||
|
||||
echo "Adding again - should fail"
|
||||
ldbadd $LDBDIR/tests/test.ldif 2> /dev/null && {
|
||||
echo "Should have failed to add again - gave $?"
|
||||
exit 1
|
||||
}
|
||||
|
||||
echo "Modifying elements"
|
||||
$VALGRIND ldbmodify $LDBDIR/tests/test-modify.ldif || exit 1
|
||||
|
||||
@ -32,8 +38,11 @@ if [ $LDB_SPECIALS = 1 ]; then
|
||||
$VALGRIND ldbadd $LDBDIR/tests/test-index.ldif || exit 1
|
||||
fi
|
||||
|
||||
echo "Adding attributes"
|
||||
$VALGRIND ldbadd $LDBDIR/tests/test-wrong_attributes.ldif || exit 1
|
||||
echo "Adding bad attributes - should fail"
|
||||
$VALGRIND ldbadd $LDBDIR/tests/test-wrong_attributes.ldif && {
|
||||
echo "Should fhave failed - gave $?"
|
||||
exit 1
|
||||
}
|
||||
|
||||
echo "testing indexed search"
|
||||
$VALGRIND ldbsearch '(uid=uham)' || exit 1
|
||||
@ -75,7 +84,7 @@ echo "Testing binary file attribute value"
|
||||
mkdir -p tests/tmp
|
||||
cp $LDBDIR/tests/samba4.png tests/tmp/samba4.png
|
||||
$VALGRIND ldbmodify $LDBDIR/tests/photo.ldif || exit 1
|
||||
count=`$VALGRIND ldbsearch '(cn=Ursula Hampster)' jpegPhoto | grep '^dn' | wc -l`
|
||||
count=`$VALGRIND ldbsearch '(cn=Hampster Ursula)' jpegPhoto | grep '^dn' | wc -l`
|
||||
if [ $count != 1 ]; then
|
||||
echo returned $count records - expected 1
|
||||
exit 1
|
||||
@ -88,7 +97,7 @@ echo "Testing compare"
|
||||
count=`$VALGRIND ldbsearch '(cn>=t)' cn | grep '^dn' | wc -l`
|
||||
if [ $count != 2 ]; then
|
||||
echo returned $count records - expected 2
|
||||
echo "this fails on opsnLdap ..."
|
||||
echo "this fails on openLdap ..."
|
||||
fi
|
||||
|
||||
count=`$VALGRIND ldbsearch '(cn<=t)' cn | grep '^dn' | wc -l`
|
||||
|
@ -17,6 +17,13 @@ if [ -z "$LDBDIR" ]; then
|
||||
export LDBDIR
|
||||
fi
|
||||
|
||||
cat <<EOF | $VALGRIND ldbadd || exit 1
|
||||
dn: @MODULES
|
||||
@LIST: rdn_name
|
||||
EOF
|
||||
|
||||
$VALGRIND ldbadd $LDBDIR/tests/init.ldif || exit 1
|
||||
|
||||
. $LDBDIR/tests/test-generic.sh
|
||||
|
||||
. $LDBDIR/tests/test-extended.sh
|
||||
|
@ -409,8 +409,3 @@ homephone: +1 313 555 8421
|
||||
pager: +1 313 555 2844
|
||||
facsimiletelephonenumber: +1 313 555 9700
|
||||
telephonenumber: +1 313 555 5331
|
||||
|
||||
dn: ou=Ldb Test,ou=People,o=University of Michigan,c=TEST
|
||||
objectclass: organizationalUnit
|
||||
ou: Ldb Test
|
||||
|
||||
|
@ -54,10 +54,10 @@ static void usage(void)
|
||||
/*
|
||||
add records from an opened file
|
||||
*/
|
||||
static int process_file(struct ldb_context *ldb, FILE *f)
|
||||
static int process_file(struct ldb_context *ldb, FILE *f, int *count)
|
||||
{
|
||||
struct ldb_ldif *ldif;
|
||||
int ret, count=0;
|
||||
int ret = LDB_SUCCESS;
|
||||
|
||||
while ((ldif = ldb_ldif_read_file(ldb, f))) {
|
||||
if (ldif->changetype != LDB_CHANGETYPE_ADD &&
|
||||
@ -74,12 +74,12 @@ static int process_file(struct ldb_context *ldb, FILE *f)
|
||||
ldb_errstring(ldb), ldb_dn_linearize(ldb, ldif->msg->dn));
|
||||
failures++;
|
||||
} else {
|
||||
count++;
|
||||
(*count)++;
|
||||
}
|
||||
ldb_ldif_read_free(ldb, ldif);
|
||||
}
|
||||
|
||||
return count;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@ -87,7 +87,7 @@ static int process_file(struct ldb_context *ldb, FILE *f)
|
||||
int main(int argc, const char **argv)
|
||||
{
|
||||
struct ldb_context *ldb;
|
||||
int i, count=0;
|
||||
int i, ret=0, count=0;
|
||||
struct ldb_cmdline *options;
|
||||
|
||||
ldb_global_init();
|
||||
@ -97,7 +97,7 @@ int main(int argc, const char **argv)
|
||||
options = ldb_cmdline_process(ldb, argc, argv, usage);
|
||||
|
||||
if (options->argc == 0) {
|
||||
count += process_file(ldb, stdin);
|
||||
ret = process_file(ldb, stdin, &count);
|
||||
} else {
|
||||
for (i=0;i<options->argc;i++) {
|
||||
const char *fname = options->argv[i];
|
||||
@ -107,7 +107,7 @@ int main(int argc, const char **argv)
|
||||
perror(fname);
|
||||
exit(1);
|
||||
}
|
||||
count += process_file(ldb, f);
|
||||
ret = process_file(ldb, f, &count);
|
||||
fclose(f);
|
||||
}
|
||||
}
|
||||
@ -116,5 +116,5 @@ int main(int argc, const char **argv)
|
||||
|
||||
printf("Added %d records with %d failures\n", count, failures);
|
||||
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user