s4:ldb Make error message in rnd_name more useful
[ira/wip.git] / source4 / lib / ldb / modules / rdn_name.c
index 65cdb2545e98863b90f95c14b9369fca59a725f8..8b54f52b5ecac133d8ee4dbba754a082ff0f40e7 100644 (file)
@@ -156,9 +156,15 @@ static int rdn_name_add(struct ldb_module *module, struct ldb_request *req)
                        }
                }
                if (i == attribute->num_values) {
-                       ldb_debug_set(ldb, LDB_DEBUG_FATAL, 
-                                     "RDN mismatch on %s: %s (%s)", 
-                                     ldb_dn_get_linearized(msg->dn), rdn_name, rdn_val.data);
+                       char *rdn_errstring = talloc_asprintf(ac, "RDN mismatch on %s: %s (%.*s) should match one of:", 
+                                                         ldb_dn_get_linearized(msg->dn), rdn_name, 
+                                                         (int)rdn_val.length, (const char *)rdn_val.data);
+                       for (i = 0; i < attribute->num_values; i++) {
+                               rdn_errstring = talloc_asprintf_append(rdn_errstring, " (%.*s)",
+                                                                      (int)attribute->values[i].length, 
+                                                                      (const char *)attribute->values[i].data);
+                       }
+                       ldb_debug_set(ldb, LDB_DEBUG_FATAL, "%s", rdn_errstring);
                        talloc_free(ac);
                        /* Match AD's error here */
                        return LDB_ERR_INVALID_DN_SYNTAX;