From 2f6a2762512e97793009dced24d1c798d9fac4e6 Mon Sep 17 00:00:00 2001 From: Nicolas Williams Date: Wed, 23 Mar 2022 15:01:06 -0500 Subject: [PATCH] hdb: Tolerate duplicate aliases One user had an entry with duplicate aliases. This happened with an earlier version of Heimdal. This commit does not remove the duplicates, but it does tolerate them. --- lib/hdb/common.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/hdb/common.c b/lib/hdb/common.c index 837fb88cc..7752dd6a0 100644 --- a/lib/hdb/common.c +++ b/lib/hdb/common.c @@ -411,6 +411,8 @@ hdb_remove_aliases(krb5_context context, HDB *db, krb5_data *key) if (code == 0) { code = db->hdb__del(context, db, akey); krb5_data_free(&akey); + if (code == HDB_ERR_NOENTRY) + code = 0; } if (code) { free_HDB_entry(&oldentry); @@ -446,6 +448,12 @@ hdb_add_aliases(krb5_context context, HDB *db, if (code == 0) { code = db->hdb__put(context, db, flags, key, value); krb5_data_free(&key); + if (code == HDB_ERR_EXISTS) + /* + * Assuming hdb_check_aliases() was called, this must be a + * duplicate in the alias list. + */ + code = 0; } krb5_data_free(&value); if (code)