summaryrefslogtreecommitdiffstats
path: root/daemons/ipa-sam/ipa_sam.c
diff options
context:
space:
mode:
Diffstat (limited to 'daemons/ipa-sam/ipa_sam.c')
-rw-r--r--daemons/ipa-sam/ipa_sam.c20
1 files changed, 3 insertions, 17 deletions
diff --git a/daemons/ipa-sam/ipa_sam.c b/daemons/ipa-sam/ipa_sam.c
index 2fa670ebd..3e8805067 100644
--- a/daemons/ipa-sam/ipa_sam.c
+++ b/daemons/ipa-sam/ipa_sam.c
@@ -528,8 +528,7 @@ static NTSTATUS ldapsam_lookup_rids(struct pdb_methods *methods,
static bool ldapsam_sid_to_id(struct pdb_methods *methods,
const struct dom_sid *sid,
- uid_t *uid, gid_t *gid,
- enum lsa_SidType *type)
+ struct unixid *id)
{
struct ldapsam_privates *priv =
(struct ldapsam_privates *)methods->private_data;
@@ -602,8 +601,7 @@ static bool ldapsam_sid_to_id(struct pdb_methods *methods,
goto done;
}
- *gid = strtoul(gid_str, NULL, 10);
- *type = SID_NAME_DOM_GRP;
+ unixid_from_gid(id, strtoul(gid_str, NULL, 10));
ret = true;
goto done;
}
@@ -618,8 +616,7 @@ static bool ldapsam_sid_to_id(struct pdb_methods *methods,
goto done;
}
- *uid = strtoul(value, NULL, 10);
- *type = SID_NAME_USER;
+ unixid_from_uid(id, strtoul(value, NULL, 10));
ret = true;
done:
@@ -3106,16 +3103,11 @@ static int bind_callback(LDAP *ldap_struct, struct smbldap_state *ldap_state)
return LDAP_LOCAL_ERROR;
}
- /*
- * In order to modify the ccache we need to wrap in become/unbecome root here
- */
- become_root();
data.name_len = strlen(data.name);
rc = krb5_init_context(&data.context);
rc = krb5_parse_name(data.context, data.name, &data.principal);
- DEBUG(0,("principal is %p (%d)\n", (void*) data.principal, rc));
rc = krb5_cc_default(data.context, &data.ccache);
@@ -3123,20 +3115,15 @@ static int bind_callback(LDAP *ldap_struct, struct smbldap_state *ldap_state)
rc = krb5_cc_get_full_name(data.context, data.ccache, &ccache_name);
rc = krb5_cc_set_default_name(data.context, ccache_name);
- DEBUG(0, ("default ccache is %s\n", krb5_cc_default_name(data.context)));
rc = krb5_kt_resolve(data.context, "FILE:/etc/samba/samba.keytab", &data.keytab);
- DEBUG(0,("keytab is %p (%d)\n", (void*) data.keytab, rc));
rc = krb5_get_init_creds_opt_alloc(data.context, &data.options);
- DEBUG(0,("options are %p (%d)\n", (void*) data.options, rc));
rc = krb5_get_init_creds_opt_set_out_ccache(data.context, data.options, data.ccache);
- DEBUG(0,("options are using the ccache (%d)\n", rc));
rc = krb5_get_init_creds_keytab(data.context, &data.creds, data.principal, data.keytab,
0, NULL, data.options);
- DEBUG(0,("creds uses keytab (%d)\n", rc));
ret = ldap_sasl_interactive_bind_s(ldap_struct,
NULL, "GSSAPI",
@@ -3151,7 +3138,6 @@ static int bind_callback(LDAP *ldap_struct, struct smbldap_state *ldap_state)
krb5_kt_close(data.context, data.keytab);
krb5_cc_close(data.context, data.ccache);
krb5_free_context(data.context);
- unbecome_root();
return ret;
}