}
switch (a->attributeID_id) {
- case DRSUAPI_ATTRIBUTE_objectClass:
- case DRSUAPI_ATTRIBUTE_subClassOf:
- case DRSUAPI_ATTRIBUTE_auxiliaryClass:
- case DRSUAPI_ATTRIBUTE_systemPossSuperiors:
- case DRSUAPI_ATTRIBUTE_possSuperiors:
+ case DRSUAPI_ATTID_objectClass:
+ case DRSUAPI_ATTID_subClassOf:
+ case DRSUAPI_ATTID_auxiliaryClass:
+ case DRSUAPI_ATTID_systemPossSuperiors:
+ case DRSUAPI_ATTID_possSuperiors:
str = talloc_strndup(ldb, (char *)valp->data, valp->length);
if (!str) {
- ldb_oom(ldb);
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_oom(ldb);
}
vo = dsdb_class_by_governsID_oid(schema, str);
talloc_free(str);
return LDB_ERR_COMPARE_FALSE;
}
return LDB_ERR_COMPARE_TRUE;
- case DRSUAPI_ATTRIBUTE_systemMustContain:
- case DRSUAPI_ATTRIBUTE_systemMayContain:
- case DRSUAPI_ATTRIBUTE_mustContain:
- case DRSUAPI_ATTRIBUTE_mayContain:
+ case DRSUAPI_ATTID_systemMustContain:
+ case DRSUAPI_ATTID_systemMayContain:
+ case DRSUAPI_ATTID_mustContain:
+ case DRSUAPI_ATTID_mayContain:
str = talloc_strndup(ldb, (char *)valp->data, valp->length);
if (!str) {
- ldb_oom(ldb);
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_oom(ldb);
}
va = dsdb_attribute_by_attributeID_oid(schema, str);
talloc_free(str);
return LDB_ERR_COMPARE_FALSE;
}
return LDB_ERR_COMPARE_TRUE;
- case DRSUAPI_ATTRIBUTE_governsID:
- case DRSUAPI_ATTRIBUTE_attributeID:
- case DRSUAPI_ATTRIBUTE_attributeSyntax:
+ case DRSUAPI_ATTID_governsID:
+ case DRSUAPI_ATTID_attributeID:
+ case DRSUAPI_ATTID_attributeSyntax:
return LDB_ERR_COMPARE_FALSE;
}
return LDB_ERR_COMPARE_FALSE;
}
- if (a->syntax->oMSyntax != 6) {
- return LDB_ERR_COMPARE_FALSE;
- }
-
return resolve_oids_need_value(ldb, schema, a, valp);
}
struct dsdb_schema *schema,
const struct ldb_message *msg)
{
- int i;
+ unsigned int i;
for (i=0; i < msg->num_elements; i++) {
int ret;
}
switch (a->attributeID_id) {
- case DRSUAPI_ATTRIBUTE_objectClass:
- case DRSUAPI_ATTRIBUTE_subClassOf:
- case DRSUAPI_ATTRIBUTE_auxiliaryClass:
- case DRSUAPI_ATTRIBUTE_systemPossSuperiors:
- case DRSUAPI_ATTRIBUTE_possSuperiors:
+ case DRSUAPI_ATTID_objectClass:
+ case DRSUAPI_ATTID_subClassOf:
+ case DRSUAPI_ATTID_auxiliaryClass:
+ case DRSUAPI_ATTID_systemPossSuperiors:
+ case DRSUAPI_ATTID_possSuperiors:
str = talloc_strndup(schema, (char *)valp->data, valp->length);
if (!str) {
- ldb_oom(ldb);
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_oom(ldb);
}
vo = dsdb_class_by_governsID_oid(schema, str);
talloc_free(str);
}
*valp = data_blob_string_const(vo->lDAPDisplayName);
return LDB_SUCCESS;
- case DRSUAPI_ATTRIBUTE_systemMustContain:
- case DRSUAPI_ATTRIBUTE_systemMayContain:
- case DRSUAPI_ATTRIBUTE_mustContain:
- case DRSUAPI_ATTRIBUTE_mayContain:
+ case DRSUAPI_ATTID_systemMustContain:
+ case DRSUAPI_ATTID_systemMayContain:
+ case DRSUAPI_ATTID_mustContain:
+ case DRSUAPI_ATTID_mayContain:
str = talloc_strndup(schema, (char *)valp->data, valp->length);
if (!str) {
- ldb_oom(ldb);
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_oom(ldb);
}
va = dsdb_attribute_by_attributeID_oid(schema, str);
talloc_free(str);
}
*valp = data_blob_string_const(va->lDAPDisplayName);
return LDB_SUCCESS;
- case DRSUAPI_ATTRIBUTE_governsID:
- case DRSUAPI_ATTRIBUTE_attributeID:
- case DRSUAPI_ATTRIBUTE_attributeSyntax:
+ case DRSUAPI_ATTID_governsID:
+ case DRSUAPI_ATTID_attributeID:
+ case DRSUAPI_ATTID_attributeSyntax:
return LDB_SUCCESS;
}
static int resolve_oids_callback(struct ldb_request *req, struct ldb_reply *ares)
{
- struct ldb_context *ldb;
struct resolve_oids_context *ac;
ac = talloc_get_type_abort(req->context, struct resolve_oids_context);
- ldb = ldb_module_get_ctx(ac->module);
if (!ares) {
return ldb_module_done(ac->req, NULL, NULL,
bool needed = false;
const char * const *attrs1;
const char **attrs2;
- uint32_t i;
+ unsigned int i;
ldb = ldb_module_get_ctx(module);
schema = dsdb_get_schema(ldb, NULL);
ac = talloc(req, struct resolve_oids_context);
if (ac == NULL) {
- ldb_oom(ldb);
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_oom(ldb);
}
ac->module = module;
ac->req = req;
tree = ldb_parse_tree_copy_shallow(ac, req->op.search.tree);
if (!tree) {
- ldb_oom(ldb);
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_oom(ldb);
}
- talloc_reference(tree, schema);
+ schema = talloc_reference(tree, schema);
+ if (!schema) {
+ return ldb_oom(ldb);
+ }
ret = resolve_oids_parse_tree_replace(ldb, schema,
tree);
return ret;
}
- attrs2 = str_list_copy_const(ac, req->op.search.attrs);
+ attrs2 = str_list_copy_const(ac,
+ discard_const_p(const char *, req->op.search.attrs));
if (req->op.search.attrs && !attrs2) {
- ldb_oom(ldb);
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_oom(ldb);
}
for (i=0; attrs2 && attrs2[i]; i++) {
const char *p;
- struct dsdb_attribute *a;
+ const struct dsdb_attribute *a;
p = strchr(attrs2[i], '.');
if (p == NULL) {
req->controls,
ac, resolve_oids_callback,
req);
+ LDB_REQ_SET_LOCATION(down_req);
if (ret != LDB_SUCCESS) {
return ret;
}
ac = talloc(req, struct resolve_oids_context);
if (ac == NULL) {
- ldb_oom(ldb);
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_oom(ldb);
}
ac->module = module;
ac->req = req;
msg = ldb_msg_copy_shallow(ac, ac->req->op.add.message);
if (!msg) {
- ldb_oom(ldb);
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_oom(ldb);
}
if (!talloc_reference(msg, schema)) {
- ldb_oom(ldb);
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_oom(ldb);
}
ret = resolve_oids_message_replace(ldb, schema, msg);
req->controls,
ac, resolve_oids_callback,
req);
+ LDB_REQ_SET_LOCATION(down_req);
if (ret != LDB_SUCCESS) {
return ret;
}
ac = talloc(req, struct resolve_oids_context);
if (ac == NULL) {
- ldb_oom(ldb);
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_oom(ldb);
}
ac->module = module;
ac->req = req;
/* we have to copy the message as the caller might have it as a const */
msg = ldb_msg_copy_shallow(ac, req->op.mod.message);
if (msg == NULL) {
- ldb_oom(ldb);
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_oom(ldb);
}
if (!talloc_reference(msg, schema)) {
- ldb_oom(ldb);
- return LDB_ERR_OPERATIONS_ERROR;
+ return ldb_oom(ldb);
}
ret = resolve_oids_message_replace(ldb, schema, msg);
req->controls,
ac, resolve_oids_callback,
req);
+ LDB_REQ_SET_LOCATION(down_req);
if (ret != LDB_SUCCESS) {
return ret;
}
return ldb_next_request(module, down_req);
}
-_PUBLIC_ const struct ldb_module_ops ldb_resolve_oids_module_ops = {
+static const struct ldb_module_ops ldb_resolve_oids_module_ops = {
.name = "resolve_oids",
.search = resolve_oids_search,
.add = resolve_oids_add,
.modify = resolve_oids_modify,
};
+
+int ldb_resolve_oids_module_init(const char *version)
+{
+ LDB_MODULE_CHECK_VERSION(version);
+ return ldb_register_module(&ldb_resolve_oids_module_ops);
+}