source4/dsdb/schema/schema_init.c obj->cn GET_STRING_RDN_VAL
authorStefan Metzmacher <metze@samba.org>
Tue, 16 Apr 2024 15:51:37 +0000 (17:51 +0200)
committerStefan Metzmacher <metze@samba.org>
Mon, 22 Apr 2024 15:00:06 +0000 (17:00 +0200)
source4/dsdb/schema/schema_init.c

index 63075b86f8e39e2a27bb51701eee4a54607cc0dc..6332eb9685079d9db02f76d8f0b241079ac45ab7 100644 (file)
@@ -555,6 +555,11 @@ static int dsdb_schema_setup_ldb_schema_attribute(struct ldb_context *ldb,
        GET_STRING_LDB_VAL(msg, attr, mem_ctx, p, elem, strict, get_string_val); \
 } while (0)
 
+#define GET_STRING_RDN_VAL(msg, mem_ctx, p, elem, strict) do { \
+       const struct ldb_val *get_string_val = ldb_dn_get_rdn_val(msg->dn); \
+       GET_STRING_LDB_VAL(msg, "rdn_val", mem_ctx, p, elem, strict, get_string_val); \
+} while (0)
+
 #define GET_STRING_LIST_LDB(msg, attr, mem_ctx, p, elem) do {  \
        int get_string_list_counter;                                    \
        struct ldb_message_element *get_string_list_el = ldb_msg_find_element(msg, attr); \
@@ -817,7 +822,10 @@ WERROR dsdb_set_class_from_ldb_dups(struct dsdb_schema *schema,
         * 'name'.
         */
        if (obj->cn == NULL) {
-               GET_STRING_LDB(msg, "name", obj, obj, cn, true);
+               GET_STRING_LDB(msg, "name", obj, obj, cn, false);
+       }
+       if (obj->cn == NULL) {
+               GET_STRING_RDN_VAL(msg, obj, obj, cn, true);
        }
 
        GET_STRING_LDB(msg, "lDAPDisplayName", obj, obj, lDAPDisplayName, true);