(hdb_ldap_create): allow configuration of default structural object
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@13676 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -50,7 +50,12 @@ LDAP_message2entry(krb5_context context, HDB * db, LDAPMessage * msg,
|
|||||||
|
|
||||||
#define HDB2LDAP(db) ((LDAP *)(db)->hdb_db)
|
#define HDB2LDAP(db) ((LDAP *)(db)->hdb_db)
|
||||||
|
|
||||||
static char *structural_object = "account"; /* XXX or person */
|
static const char *default_structural_object = "account";
|
||||||
|
static char *structural_object;
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
static char *krb5kdcentry_attrs[] = {
|
static char *krb5kdcentry_attrs[] = {
|
||||||
"cn",
|
"cn",
|
||||||
@@ -389,7 +394,7 @@ LDAP_entry2mods(krb5_context context, HDB * db, hdb_entry * ent,
|
|||||||
for (i=0; i < num_objectclasses; i++) {
|
for (i=0; i < num_objectclasses; i++) {
|
||||||
if (strcasecmp(values[i], "sambaSamAccount") == 0) {
|
if (strcasecmp(values[i], "sambaSamAccount") == 0) {
|
||||||
is_samba_account = TRUE;
|
is_samba_account = TRUE;
|
||||||
} else if (strcasecmp(values[i], "account") == 0) {
|
} else if (strcasecmp(values[i], structural_object) == 0) {
|
||||||
is_account = TRUE;
|
is_account = TRUE;
|
||||||
} else if (strcasecmp(values[i], "krb5Principal") == 0) {
|
} else if (strcasecmp(values[i], "krb5Principal") == 0) {
|
||||||
is_heimdal_principal = TRUE;
|
is_heimdal_principal = TRUE;
|
||||||
@@ -1640,6 +1645,20 @@ static krb5_error_code LDAP_destroy(krb5_context context, HDB * db)
|
|||||||
krb5_error_code
|
krb5_error_code
|
||||||
hdb_ldap_create(krb5_context context, HDB ** db, const char *arg)
|
hdb_ldap_create(krb5_context context, HDB ** db, const char *arg)
|
||||||
{
|
{
|
||||||
|
if (structural_object == NULL) {
|
||||||
|
const char *p;
|
||||||
|
|
||||||
|
p = krb5_config_get_string(context, NULL, "kdc",
|
||||||
|
"hdb-ldap-structural-object", NULL);
|
||||||
|
if (p == NULL)
|
||||||
|
p = default_structural_object;
|
||||||
|
structural_object = strdup(p);
|
||||||
|
if (structural_object == NULL) {
|
||||||
|
krb5_set_error_string(context, "malloc: out of memory");
|
||||||
|
return ENOMEM;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
*db = malloc(sizeof(**db));
|
*db = malloc(sizeof(**db));
|
||||||
if (*db == NULL) {
|
if (*db == NULL) {
|
||||||
krb5_set_error_string(context, "malloc: out of memory");
|
krb5_set_error_string(context, "malloc: out of memory");
|
||||||
|
Reference in New Issue
Block a user