kdc_db_ctx = talloc_get_type_abort(db->hdb_db,
struct samba_kdc_db_context);
- code = samba_kdc_fetch(context,
- kdc_db_ctx,
- principal,
- flags,
- kvno,
- &sdb_entry_ex);
- /*
- * If SDB_ERR_WRONG_REALM is returned we need to process the sdb_entry
- * to fill the principal in the HDB entry.
- */
- if (code != 0 && code != SDB_ERR_WRONG_REALM) {
- return code;
+ ret = samba_kdc_fetch(context,
+ kdc_db_ctx,
+ principal,
+ flags,
+ kvno,
+ &sdb_entry_ex);
+ switch (ret) {
+ case 0:
+ code = 0;
+ break;
+ case SDB_ERR_WRONG_REALM:
+ /*
+ * If SDB_ERR_WRONG_REALM is returned we need to process the
+ * sdb_entry to fill the principal in the HDB entry.
+ */
+ code = HDB_ERR_WRONG_REALM;
+ break;
+ case SDB_ERR_NOENTRY:
+ return HDB_ERR_NOENTRY;
+ default:
+ return HDB_ERR_NOT_FOUND_HERE;
}
ret = sdb_entry_ex_to_hdb_entry_ex(context, &sdb_entry_ex, entry_ex);
sdb_free_entry(&sdb_entry_ex);
- if (code == 0 && ret != 0) {
+ if (code != 0 && ret != 0) {
code = ret;
}
struct samba_kdc_db_context);
ret = samba_kdc_firstkey(context, kdc_db_ctx, &sdb_entry_ex);
- if (ret) {
- return ret;
+ switch (ret) {
+ case 0:
+ break;
+ case SDB_ERR_WRONG_REALM:
+ return HDB_ERR_WRONG_REALM;
+ case SDB_ERR_NOENTRY:
+ return HDB_ERR_NOENTRY;
+ default:
+ return HDB_ERR_NOT_FOUND_HERE;
}
ret = sdb_entry_ex_to_hdb_entry_ex(context, &sdb_entry_ex, entry);
struct samba_kdc_db_context);
ret = samba_kdc_nextkey(context, kdc_db_ctx, &sdb_entry_ex);
- if (ret) {
- return ret;
+ switch (ret) {
+ case 0:
+ break;
+ case SDB_ERR_WRONG_REALM:
+ return HDB_ERR_WRONG_REALM;
+ case SDB_ERR_NOENTRY:
+ return HDB_ERR_NOENTRY;
+ default:
+ return HDB_ERR_NOT_FOUND_HERE;
}
ret = sdb_entry_ex_to_hdb_entry_ex(context, &sdb_entry_ex, entry);
{
struct samba_kdc_db_context *kdc_db_ctx;
struct samba_kdc_entry *skdc_entry;
+ krb5_error_code ret;
kdc_db_ctx = talloc_get_type_abort(db->hdb_db,
struct samba_kdc_db_context);
skdc_entry = talloc_get_type_abort(entry->ctx,
struct samba_kdc_entry);
- return samba_kdc_check_s4u2proxy(context, kdc_db_ctx,
- skdc_entry,
- target_principal);
+ ret = samba_kdc_check_s4u2proxy(context, kdc_db_ctx,
+ skdc_entry,
+ target_principal);
+ switch (ret) {
+ case 0:
+ break;
+ case SDB_ERR_WRONG_REALM:
+ ret = HDB_ERR_WRONG_REALM;
+ break;
+ case SDB_ERR_NOENTRY:
+ ret = HDB_ERR_NOENTRY;
+ break;
+ default:
+ ret = HDB_ERR_NOT_FOUND_HERE;
+ break;
+ }
+
+ return ret;
}
static krb5_error_code
{
struct samba_kdc_db_context *kdc_db_ctx;
struct samba_kdc_entry *skdc_entry;
+ krb5_error_code ret;
kdc_db_ctx = talloc_get_type_abort(db->hdb_db,
struct samba_kdc_db_context);
skdc_entry = talloc_get_type_abort(entry->ctx,
struct samba_kdc_entry);
- return samba_kdc_check_pkinit_ms_upn_match(context, kdc_db_ctx,
- skdc_entry,
- certificate_principal);
+ ret = samba_kdc_check_pkinit_ms_upn_match(context, kdc_db_ctx,
+ skdc_entry,
+ certificate_principal);
+ switch (ret) {
+ case 0:
+ break;
+ case SDB_ERR_WRONG_REALM:
+ ret = HDB_ERR_WRONG_REALM;
+ break;
+ case SDB_ERR_NOENTRY:
+ ret = HDB_ERR_NOENTRY;
+ break;
+ default:
+ ret = HDB_ERR_NOT_FOUND_HERE;
+ break;
+ }
+
+ return ret;
}
static krb5_error_code
{
struct samba_kdc_db_context *kdc_db_ctx;
struct samba_kdc_entry *skdc_entry;
+ krb5_error_code ret;
kdc_db_ctx = talloc_get_type_abort(db->hdb_db,
struct samba_kdc_db_context);
skdc_entry = talloc_get_type_abort(entry->ctx,
struct samba_kdc_entry);
- return samba_kdc_check_s4u2self(context, kdc_db_ctx,
- skdc_entry,
- target_principal);
+ ret = samba_kdc_check_s4u2self(context, kdc_db_ctx,
+ skdc_entry,
+ target_principal);
+ switch (ret) {
+ case 0:
+ break;
+ case SDB_ERR_WRONG_REALM:
+ ret = HDB_ERR_WRONG_REALM;
+ break;
+ case SDB_ERR_NOENTRY:
+ ret = HDB_ERR_NOENTRY;
+ break;
+ default:
+ ret = HDB_ERR_NOT_FOUND_HERE;
+ break;
+ }
+
+ return ret;
}
static krb5_error_code hdb_samba4_auth_status(krb5_context context, HDB *db,