1
0
mirror of https://github.com/samba-team/samba.git synced 2025-11-16 20:23:50 +03:00

r20232: specify attribute name and structure element name always together

there're a view elements where both values doesn't match

LDAP-SCHEMA now successful loads the schema

metze
This commit is contained in:
Stefan Metzmacher
2006-12-17 20:19:06 +00:00
committed by Gerald (Jerry) Carter
parent 3af0a9b2c4
commit 5d7827f45e

View File

@@ -119,21 +119,21 @@ WERROR dsdb_map_int2oid(uint32_t in, TALLOC_CTX *mem_ctx, const char **out)
return WERR_DS_NO_MSDS_INTID;
}
#define GET_STRING_LDB(msg, p, elem, strict) do { \
(p)->elem = samdb_result_string(msg, #elem, NULL);\
#define GET_STRING_LDB(msg, attr, mem_ctx, p, elem, strict) do { \
(p)->elem = samdb_result_string(msg, attr, NULL);\
if (strict && (p)->elem == NULL) { \
d_printf("%s: %s == NULL\n", __location__, #elem); \
d_printf("%s: %s == NULL\n", __location__, attr); \
return WERR_INVALID_PARAM; \
} \
(void)talloc_steal(p, (p)->elem); \
talloc_steal(mem_ctx, (p)->elem); \
} while (0)
#define GET_BOOL_LDB(msg, p, elem, strict) do { \
#define GET_BOOL_LDB(msg, attr, p, elem, strict) do { \
const char *str; \
str = samdb_result_string(msg, #elem, NULL);\
str = samdb_result_string(msg, attr, NULL);\
if (str == NULL) { \
if (strict) { \
d_printf("%s: %s == NULL\n", __location__, #elem); \
d_printf("%s: %s == NULL\n", __location__, attr); \
return WERR_INVALID_PARAM; \
} else { \
(p)->elem = False; \
@@ -143,25 +143,25 @@ WERROR dsdb_map_int2oid(uint32_t in, TALLOC_CTX *mem_ctx, const char **out)
} else if (strcasecmp("FALSE", str) == 0) { \
(p)->elem = False; \
} else { \
d_printf("%s: %s == %s\n", __location__, #elem, str); \
d_printf("%s: %s == %s\n", __location__, attr, str); \
return WERR_INVALID_PARAM; \
} \
} while (0)
#define GET_UINT32_LDB(msg, p, elem) do { \
(p)->elem = samdb_result_uint(msg, #elem, 0);\
#define GET_UINT32_LDB(msg, attr, p, elem) do { \
(p)->elem = samdb_result_uint(msg, attr, 0);\
} while (0)
#define GET_GUID_LDB(msg, p, elem) do { \
(p)->elem = samdb_result_guid(msg, #elem);\
#define GET_GUID_LDB(msg, attr, p, elem) do { \
(p)->elem = samdb_result_guid(msg, attr);\
} while (0)
#define GET_BLOB_LDB(msg, p, elem, attr) do { \
#define GET_BLOB_LDB(msg, attr, mem_ctx, p, elem) do { \
const struct ldb_val *_val;\
_val = ldb_msg_find_ldb_val(msg, attr);\
if (_val) {\
(p)->elem = *_val;\
(void)talloc_steal(p, (p)->elem.data);\
talloc_steal(mem_ctx, (p)->elem.data);\
} else {\
ZERO_STRUCT((p)->elem);\
}\
@@ -171,42 +171,52 @@ WERROR dsdb_attribute_from_ldb(struct ldb_message *msg, TALLOC_CTX *mem_ctx, str
{
WERROR status;
GET_STRING_LDB(msg, attr, cn, True);
GET_STRING_LDB(msg, attr, lDAPDisplayName, True);
GET_STRING_LDB(msg, attr, attributeID_oid, True);
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);
status = dsdb_map_oid2int(attr->attributeID_oid, &attr->attributeID_id);
W_ERROR_NOT_OK_RETURN(status);
GET_GUID_LDB(msg, attr, schemaIDGUID);
GET_UINT32_LDB(msg, attr, mAPIID);
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);
GET_GUID_LDB(msg, attr, attributeSecurityGUID);
GET_GUID_LDB(msg, "attributeSecurityGUID", attr, attributeSecurityGUID);
GET_UINT32_LDB(msg, attr, searchFlags);
GET_UINT32_LDB(msg, attr, systemFlags);
GET_BOOL_LDB(msg, attr, isMemberOfPartialAttributeSet, False);
GET_UINT32_LDB(msg, attr, linkID);
GET_UINT32_LDB(msg, "searchFlags", attr, searchFlags);
GET_UINT32_LDB(msg, "systemFlags", attr, systemFlags);
GET_BOOL_LDB(msg, "isMemberOfPartialAttributeSet", attr, isMemberOfPartialAttributeSet, False);
GET_UINT32_LDB(msg, "linkID", attr, linkID);
GET_STRING_LDB(msg, attr, attributeSyntax_oid, True);
GET_STRING_LDB(msg, "attributeSyntax", mem_ctx, attr, attributeSyntax_oid, True);
status = dsdb_map_oid2int(attr->attributeSyntax_oid, &attr->attributeSyntax_id);
W_ERROR_NOT_OK_RETURN(status);
GET_UINT32_LDB(msg, attr, oMSyntax);
GET_BLOB_LDB(msg, attr, oMObjectClass, "oMObjectClass");
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);
GET_BOOL_LDB(msg, attr, isSingleValued, True);
GET_UINT32_LDB(msg, attr, rangeLower);
GET_UINT32_LDB(msg, attr, rangeUpper);
GET_BOOL_LDB(msg, attr, extendedCharsAllowed, False);
GET_BOOL_LDB(msg, "isSingleValued", attr, isSingleValued, True);
GET_UINT32_LDB(msg, "rangeLower", attr, rangeLower);
GET_UINT32_LDB(msg, "rangeUpper", attr, rangeUpper);
GET_BOOL_LDB(msg, "extendedCharsAllowed", attr, extendedCharsAllowed, False);
GET_UINT32_LDB(msg, attr, schemaFlagsEx);
GET_BLOB_LDB(msg, attr, msDs_Schema_Extensions, "msDs-Schema-Extensions");
GET_UINT32_LDB(msg, "schemaFlagsEx", attr, schemaFlagsEx);
GET_BLOB_LDB(msg, "msDs-Schema-Extensions", mem_ctx, attr, msDs_Schema_Extensions);
GET_BOOL_LDB(msg, attr, showInAdvancedViewOnly, False);
GET_STRING_LDB(msg, attr, adminDisplayName, True);
GET_STRING_LDB(msg, attr, adminDescription, True);
GET_STRING_LDB(msg, attr, classDisplayName, True);
GET_BOOL_LDB(msg, attr, isEphemeral, False);
GET_BOOL_LDB(msg, attr, isDefunct, False);
GET_BOOL_LDB(msg, attr, systemOnly, False);
GET_BOOL_LDB(msg, "showInAdvancedViewOnly", attr, showInAdvancedViewOnly, False);
GET_STRING_LDB(msg, "adminDisplayName", mem_ctx, attr, adminDisplayName, False);
GET_STRING_LDB(msg, "adminDescription", mem_ctx, attr, adminDescription, False);
GET_STRING_LDB(msg, "classDisplayName", mem_ctx, attr, classDisplayName, False);
GET_BOOL_LDB(msg, "isEphemeral", attr, isEphemeral, False);
GET_BOOL_LDB(msg, "isDefunct", attr, isDefunct, False);
GET_BOOL_LDB(msg, "systemOnly", attr, systemOnly, False);
return WERR_OK;
}
@@ -215,41 +225,46 @@ WERROR dsdb_class_from_ldb(struct ldb_message *msg, TALLOC_CTX *mem_ctx, struct
{
WERROR status;
GET_STRING_LDB(msg, obj, cn, True);
GET_STRING_LDB(msg, obj, lDAPDisplayName, True);
GET_STRING_LDB(msg, obj, governsID_oid, True);
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);
status = dsdb_map_oid2int(obj->governsID_oid, &obj->governsID_id);
W_ERROR_NOT_OK_RETURN(status);
GET_GUID_LDB(msg, obj, schemaIDGUID);
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, obj, objectClassCategory);
GET_STRING_LDB(msg, obj, rDNAttID, True);
GET_STRING_LDB(msg, obj, defaultObjectCategory, True);
GET_UINT32_LDB(msg, "objectClassCategory", obj, objectClassCategory);
GET_STRING_LDB(msg, "rDNAttID", mem_ctx, obj, rDNAttID, True);
GET_STRING_LDB(msg, "defaultObjectCategory", mem_ctx, obj, defaultObjectCategory, True);
GET_STRING_LDB(msg, obj, subClassOf, True);
GET_STRING_LDB(msg, "subClassOf", mem_ctx, obj, subClassOf, True);
GET_STRING_LDB(msg, obj, systemAuxiliaryClass, False);
GET_STRING_LDB(msg, "systemAuxiliaryClass", mem_ctx, obj, systemAuxiliaryClass, False);
obj->systemPossSuperiors= NULL;
obj->systemMustContain = NULL;
obj->systemMayContain = NULL;
GET_STRING_LDB(msg, obj, auxiliaryClass, False);
GET_STRING_LDB(msg, "auxiliaryClass", mem_ctx, obj, auxiliaryClass, False);
obj->possSuperiors = NULL;
obj->mustContain = NULL;
obj->mayContain = NULL;
GET_STRING_LDB(msg, obj, defaultSecurityDescriptor, False);
GET_STRING_LDB(msg, "defaultSecurityDescriptor", mem_ctx, obj, defaultSecurityDescriptor, False);
GET_UINT32_LDB(msg, obj, schemaFlagsEx);
GET_BLOB_LDB(msg, obj, msDs_Schema_Extensions, "msDs-Schema-Extensions");
GET_UINT32_LDB(msg, "schemaFlagsEx", obj, schemaFlagsEx);
GET_BLOB_LDB(msg, "msDs-Schema-Extensions", mem_ctx, obj, msDs_Schema_Extensions);
GET_BOOL_LDB(msg, obj, showInAdvancedViewOnly, False);
GET_STRING_LDB(msg, obj, adminDisplayName, True);
GET_STRING_LDB(msg, obj, adminDescription, True);
GET_STRING_LDB(msg, obj, classDisplayName, True);
GET_BOOL_LDB(msg, obj, defaultHidingValue, True);
GET_BOOL_LDB(msg, obj, isDefunct, False);
GET_BOOL_LDB(msg, obj, systemOnly, False);
GET_BOOL_LDB(msg, "showInAdvancedViewOnly", obj, showInAdvancedViewOnly, False);
GET_STRING_LDB(msg, "adminDisplayName", mem_ctx, obj, adminDisplayName, False);
GET_STRING_LDB(msg, "adminDescription", mem_ctx, obj, adminDescription, False);
GET_STRING_LDB(msg, "classDisplayName", mem_ctx, obj, classDisplayName, False);
GET_BOOL_LDB(msg, "defaultHidingValue", obj, defaultHidingValue, False);
GET_BOOL_LDB(msg, "isDefunct", obj, isDefunct, False);
GET_BOOL_LDB(msg, "systemOnly", obj, systemOnly, False);
return WERR_OK;
}