From c11fd328bc4d175308e58cd7a0c72dcb8d16bfdf Mon Sep 17 00:00:00 2001 From: Robbie Harwood Date: Thu, 5 Sep 2019 13:00:27 -0400 Subject: [PATCH] Fix segfault in ipadb_parse_ldap_entry() lcontext may be NULL here, probably due to a restarted 389ds. Based on a patch by Rob Crittenden. Signed-off-by: Robbie Harwood Reviewed-By: Alexander Bokovoy --- daemons/ipa-kdb/ipa_kdb_principals.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/daemons/ipa-kdb/ipa_kdb_principals.c b/daemons/ipa-kdb/ipa_kdb_principals.c index 58f462f8a..b208d090a 100644 --- a/daemons/ipa-kdb/ipa_kdb_principals.c +++ b/daemons/ipa-kdb/ipa_kdb_principals.c @@ -21,6 +21,7 @@ */ #include "ipa_kdb.h" +#include "ipa_krb5.h" #include /* @@ -544,6 +545,17 @@ static krb5_error_code ipadb_parse_ldap_entry(krb5_context kcontext, return KRB5_KDB_DBNOTINITED; } lcontext = ipactx->lcontext; + if (!lcontext) { + krb5_klog_syslog(LOG_INFO, + "No LDAP connection in ipadb_parse_ldap_entry(); retrying...\n"); + ret = ipadb_get_connection(ipactx); + if (ret != 0) { + krb5_klog_syslog(LOG_ERR, + "No LDAP connection on retry in ipadb_parse_ldap_entry()!\n"); + kerr = KRB5_KDB_INTERNAL_ERROR; + goto done; + } + } entry->magic = KRB5_KDB_MAGIC_NUMBER; entry->len = KRB5_KDB_V1_BASE_LENGTH;