diff options
author | Michal Židek <mzidek@redhat.com> | 2016-07-12 12:11:18 +0200 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2016-07-13 11:58:48 +0200 |
commit | b5f61f8963300c9ba011436f234e9e10224aff6d (patch) | |
tree | f1afb173f0302e19c76d033abd2975034133a77d | |
parent | aeab20358006d728a284f969f92f3890498cd651 (diff) | |
download | sssd-b5f61f8963300c9ba011436f234e9e10224aff6d.tar.gz sssd-b5f61f8963300c9ba011436f234e9e10224aff6d.tar.xz sssd-b5f61f8963300c9ba011436f234e9e10224aff6d.zip |
dyndns: Add checks for NULL
Fixes:
https://fedorahosted.org/sssd/ticket/3076
We segfaulted in this area once. This patch
makes the code more defensive and adds
some DEBUG messages.
Normally the structures are filled in online
and/or resolve callbacks.
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
-rw-r--r-- | src/providers/ipa/ipa_dyndns.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/providers/ipa/ipa_dyndns.c b/src/providers/ipa/ipa_dyndns.c index 7217c6145..dc910770c 100644 --- a/src/providers/ipa/ipa_dyndns.c +++ b/src/providers/ipa/ipa_dyndns.c @@ -162,6 +162,26 @@ ipa_dyndns_update_send(struct ipa_options *ctx) } state->ipa_ctx = ctx; + /* The following three checks are here to prevent SEGFAULT + * from ticket #3076. */ + if (ctx->service == NULL) { + DEBUG(SSSDBG_CRIT_FAILURE, "service structure not initialized\n"); + ret = EINVAL; + goto done; + } + + if (ctx->service->sdap == NULL) { + DEBUG(SSSDBG_CRIT_FAILURE, "sdap structure not initialized\n"); + ret = EINVAL; + goto done; + } + + if (ctx->service->sdap->uri == NULL) { + DEBUG(SSSDBG_CRIT_FAILURE, "LDAP uri not set\n"); + ret = EINVAL; + goto done; + } + if (ctx->dyndns_ctx->last_refresh + 60 > time(NULL) || ctx->dyndns_ctx->timer_in_progress) { DEBUG(SSSDBG_FUNC_DATA, "Last periodic update ran recently or timer " |