diff --git a/source/lib/ldb/include/ldb.h b/source/lib/ldb/include/ldb.h index d017861b052..08bb2dd2f60 100644 --- a/source/lib/ldb/include/ldb.h +++ b/source/lib/ldb/include/ldb.h @@ -502,6 +502,22 @@ typedef int (*ldb_qsort_cmp_fn_t) (void *v1, void *v2, void *opaque); */ #define LDB_EXTENDED_START_TLS_OID "1.3.6.1.4.1.1466.20037" +/** + OID for LDAP Extended Operation START_TLS. + + This Extended operation is used to start a new TLS + channel on top of a clear text channel. +*/ +#define LDB_EXTENDED_DYNAMIC_OID "1.3.6.1.4.1.1466.101.119.1" + +/** + OID for LDAP Extended Operation START_TLS. + + This Extended operation is used to start a new TLS + channel on top of a clear text channel. +*/ +#define LDB_EXTENDED_FAST_BIND_OID "1.2.840.113556.1.4.1781" + struct ldb_paged_control { int size; int cookie_len; diff --git a/source/lib/ldb/ldb_tdb/ldb_tdb.c b/source/lib/ldb/ldb_tdb/ldb_tdb.c index 588f73fe23b..7ee715f5619 100644 --- a/source/lib/ldb/ldb_tdb/ldb_tdb.c +++ b/source/lib/ldb/ldb_tdb/ldb_tdb.c @@ -270,41 +270,26 @@ static int ltdb_add_internal(struct ldb_module *module, const struct ldb_message } ret = ltdb_store(module, msg, TDB_INSERT); - switch (ret) { - case LDB_SUCCESS: - { - TALLOC_CTX *mem_ctx = talloc_new(module); + + if (ret == LDB_ERR_ENTRY_ALREADY_EXISTS) { char *dn; - dn = ldb_dn_linearize(mem_ctx, msg->dn); + + dn = ldb_dn_linearize(module, msg->dn); if (!dn) { - break; + return ret; } + ldb_set_errstring(module->ldb, talloc_asprintf(module, "Entry %s already exists", dn)); + talloc_free(dn); + return ret; + } + + if (ret == LDB_SUCCESS) { ret = ltdb_modified(module, msg->dn); if (ret != LDB_SUCCESS) { return LDB_ERR_OPERATIONS_ERROR; } - break; - } - case LDB_ERR_ENTRY_ALREADY_EXISTS: - { - TALLOC_CTX *mem_ctx = talloc_new(module); - char *errstring, *dn; - if (!mem_ctx) { - break; - } - dn = ldb_dn_linearize(mem_ctx, msg->dn); - if (!dn) { - break; - } - errstring = talloc_asprintf(mem_ctx, "Entry %s already exists", - dn); - ldb_set_errstring(module->ldb, errstring); - talloc_free(mem_ctx); - break; - } - default: - break; } + return ret; }