From ff5934cbe9c02ca3e3d2a851460339f3126202b7 Mon Sep 17 00:00:00 2001 From: Stephen Gallagher Date: Dec 02 2012 20:57:48 +0000 Subject: IPA: Handle bad results from c-ares lookup In some situations, the c-ares lookup can return NULL instead of a list of addresses. In this situation, we need to avoid dereferencing NULL. This patch adds a log message and sets the count to zero so it is handled appropriately below. --- diff --git a/src/providers/ipa/ipa_dyndns.c b/src/providers/ipa/ipa_dyndns.c index 3f430a3..9d7a5b6 100644 --- a/src/providers/ipa/ipa_dyndns.c +++ b/src/providers/ipa/ipa_dyndns.c @@ -733,7 +733,17 @@ ipa_dyndns_update_get_addrs_done(struct tevent_req *subreq) /* EOK */ - for (count=0; rhostent->addr_list[count]; count++); + if (rhostent->addr_list) { + for (count=0; rhostent->addr_list[count]; count++); + } else { + /* The address list is NULL. This is probably a bug in + * c-ares, but we need to handle it gracefully. + */ + DEBUG(SSSDBG_MINOR_FAILURE, + ("Lookup of [%s] returned no addresses. Skipping.\n", + rhostent->name)); + count = 0; + } state->addrlist = talloc_realloc(state, state->addrlist, char *, state->count + count + 1);