svn commit: samba r20766 - in branches/SAMBA_4_0/source:
dsdb/schema torture/ldap
metze at samba.org
metze at samba.org
Sun Jan 14 15:22:13 GMT 2007
Author: metze
Date: 2007-01-14 15:22:12 +0000 (Sun, 14 Jan 2007)
New Revision: 20766
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=20766
Log:
when creating dsdb_attribute or dsdb_class structs from ldb, try the oid mapping
if the dsdb_schema has mappings attached
metze
Modified:
branches/SAMBA_4_0/source/dsdb/schema/schema_init.c
branches/SAMBA_4_0/source/torture/ldap/schema.c
Changeset:
Modified: branches/SAMBA_4_0/source/dsdb/schema/schema_init.c
===================================================================
--- branches/SAMBA_4_0/source/dsdb/schema/schema_init.c 2007-01-14 15:17:48 UTC (rev 20765)
+++ branches/SAMBA_4_0/source/dsdb/schema/schema_init.c 2007-01-14 15:22:12 UTC (rev 20766)
@@ -361,13 +361,28 @@
}\
} while (0)
-WERROR dsdb_attribute_from_ldb(struct ldb_message *msg, TALLOC_CTX *mem_ctx, struct dsdb_attribute *attr)
+WERROR dsdb_attribute_from_ldb(const struct dsdb_schema *schema,
+ struct ldb_message *msg,
+ TALLOC_CTX *mem_ctx,
+ struct dsdb_attribute *attr)
{
+ WERROR status;
+
GET_STRING_LDB(msg, "cn", mem_ctx, attr, cn, True);
GET_STRING_LDB(msg, "lDAPDisplayName", mem_ctx, attr, lDAPDisplayName, True);
GET_STRING_LDB(msg, "attributeID", mem_ctx, attr, attributeID_oid, True);
- /* set an invalid value */
- attr->attributeID_id = 0xFFFFFFFF;
+ if (schema->num_prefixes == 0) {
+ /* set an invalid value */
+ attr->attributeID_id = 0xFFFFFFFF;
+ } else {
+ status = dsdb_map_oid2int(schema, attr->attributeID_oid, &attr->attributeID_id);
+ if (!W_ERROR_IS_OK(status)) {
+ DEBUG(0,("%s: '%s': unable to map attributeID %s: %s\n",
+ __location__, attr->lDAPDisplayName, attr->attributeID_oid,
+ win_errstr(status)));
+ return status;
+ }
+ }
GET_GUID_LDB(msg, "schemaIDGUID", attr, schemaIDGUID);
GET_UINT32_LDB(msg, "mAPIID", attr, mAPIID);
@@ -379,8 +394,18 @@
GET_UINT32_LDB(msg, "linkID", attr, linkID);
GET_STRING_LDB(msg, "attributeSyntax", mem_ctx, attr, attributeSyntax_oid, True);
- /* set an invalid value */
- attr->attributeSyntax_id = 0xFFFFFFFF;
+ if (schema->num_prefixes == 0) {
+ /* set an invalid value */
+ attr->attributeSyntax_id = 0xFFFFFFFF;
+ } else {
+ status = dsdb_map_oid2int(schema, attr->attributeSyntax_oid, &attr->attributeSyntax_id);
+ if (!W_ERROR_IS_OK(status)) {
+ DEBUG(0,("%s: '%s': unable to map attributeSyntax_ %s: %s\n",
+ __location__, attr->lDAPDisplayName, attr->attributeSyntax_oid,
+ win_errstr(status)));
+ return status;
+ }
+ }
GET_UINT32_LDB(msg, "oMSyntax", attr, oMSyntax);
GET_BLOB_LDB(msg, "oMObjectClass", mem_ctx, attr, oMObjectClass);
@@ -408,13 +433,28 @@
return WERR_OK;
}
-WERROR dsdb_class_from_ldb(struct ldb_message *msg, TALLOC_CTX *mem_ctx, struct dsdb_class *obj)
+WERROR dsdb_class_from_ldb(const struct dsdb_schema *schema,
+ struct ldb_message *msg,
+ TALLOC_CTX *mem_ctx,
+ struct dsdb_class *obj)
{
+ WERROR status;
+
GET_STRING_LDB(msg, "cn", mem_ctx, obj, cn, True);
GET_STRING_LDB(msg, "lDAPDisplayName", mem_ctx, obj, lDAPDisplayName, True);
GET_STRING_LDB(msg, "governsID", mem_ctx, obj, governsID_oid, True);
- /* set an invalid value */
- obj->governsID_id = 0xFFFFFFFF;
+ if (schema->num_prefixes == 0) {
+ /* set an invalid value */
+ obj->governsID_id = 0xFFFFFFFF;
+ } else {
+ status = dsdb_map_oid2int(schema, obj->governsID_oid, &obj->governsID_id);
+ if (!W_ERROR_IS_OK(status)) {
+ DEBUG(0,("%s: '%s': unable to map governsID %s: %s\n",
+ __location__, obj->lDAPDisplayName, obj->governsID_oid,
+ win_errstr(status)));
+ return status;
+ }
+ }
GET_GUID_LDB(msg, "schemaIDGUID", obj, schemaIDGUID);
GET_UINT32_LDB(msg, "objectClassCategory", obj, objectClassCategory);
Modified: branches/SAMBA_4_0/source/torture/ldap/schema.c
===================================================================
--- branches/SAMBA_4_0/source/torture/ldap/schema.c 2007-01-14 15:17:48 UTC (rev 20765)
+++ branches/SAMBA_4_0/source/torture/ldap/schema.c 2007-01-14 15:22:12 UTC (rev 20766)
@@ -210,7 +210,7 @@
goto failed;
}
- status = dsdb_attribute_from_ldb(msg, attr, attr);
+ status = dsdb_attribute_from_ldb(schema, msg, attr, attr);
if (!W_ERROR_IS_OK(status)) {
goto failed;
}
@@ -233,7 +233,7 @@
goto failed;
}
- status = dsdb_class_from_ldb(msg, obj, obj);
+ status = dsdb_class_from_ldb(schema, msg, obj, obj);
if (!W_ERROR_IS_OK(status)) {
goto failed;
}
More information about the samba-cvs
mailing list