[Freeipa-devel] [PATCH 0074] Fix zone removal in persistent search update_zone()
Adam Tkac
atkac at redhat.com
Tue Oct 9 11:08:23 UTC 2012
On Fri, Oct 05, 2012 at 01:15:13PM +0200, Petr Spacek wrote:
> Hello,
>
> Fix zone removal in persistent search update_zone().
>
> Without this patch any zone removed through ipa dnszone-del will
> remain active and will return SERVFAILs.
Ack
> From e09eebf3c370ff4106013cdeda10a80782e26611 Mon Sep 17 00:00:00 2001
> From: Petr Spacek <pspacek at redhat.com>
> Date: Fri, 5 Oct 2012 13:02:37 +0200
> Subject: [PATCH] Fix zone removal in persistent search update_zone() handler.
>
> Signed-off-by: Petr Spacek <pspacek at redhat.com>
> ---
> src/ldap_helper.c | 20 ++++++++++----------
> 1 file changed, 10 insertions(+), 10 deletions(-)
>
> diff --git a/src/ldap_helper.c b/src/ldap_helper.c
> index 68b635f84b4c9015752667510c0497e5f56bc7ab..199b345bb604c30bfa8a3690afc844ca8b264e89 100644
> --- a/src/ldap_helper.c
> +++ b/src/ldap_helper.c
> @@ -3056,7 +3056,6 @@ update_zone(isc_task_t *task, isc_event_t *event)
> ldap_qresult_t *ldap_qresult_record = NULL;
> ldap_entry_t *entry_zone = NULL;
> ldap_entry_t *entry_record = NULL;
> - isc_boolean_t delete = ISC_TRUE;
> isc_mem_t *mctx;
> dns_name_t prevname;
> char *attrs_zone[] = {
> @@ -3073,14 +3072,16 @@ update_zone(isc_task_t *task, isc_event_t *event)
> dns_name_init(&prevname, NULL);
>
> CHECK(manager_get_ldap_instance(pevent->dbname, &inst));
> - CHECK(ldap_query(inst, NULL, &ldap_qresult_zone, pevent->dn,
> +
> + result = ldap_query(inst, NULL, &ldap_qresult_zone, pevent->dn,
> LDAP_SCOPE_BASE, attrs_zone, 0,
> - "(&(objectClass=idnsZone)(idnsZoneActive=TRUE))"));
> + "(&(objectClass=idnsZone)(idnsZoneActive=TRUE))");
> + if (result != ISC_R_SUCCESS && result != ISC_R_NOTFOUND)
> + CLEANUP_WITH(result);
>
> - for (entry_zone = HEAD(ldap_qresult_zone->ldap_entries);
> - entry_zone != NULL;
> - entry_zone = NEXT(entry_zone, link)) {
> - delete = ISC_FALSE;
> + if (result == ISC_R_SUCCESS &&
> + HEAD(ldap_qresult_zone->ldap_entries) != NULL) {
> + entry_zone = HEAD(ldap_qresult_zone->ldap_entries);
> CHECK(ldap_parse_zoneentry(entry_zone, inst));
>
> if (PSEARCH_MODDN(pevent->chgtype)) {
> @@ -3106,10 +3107,9 @@ update_zone(isc_task_t *task, isc_event_t *event)
> }
>
> INSIST(NEXT(entry_zone, link) == NULL); /* no multiple zones with same DN */
> - }
> -
> - if (delete)
> + } else {
> CHECK(ldap_delete_zone(inst, pevent->dn, ISC_TRUE));
> + }
>
> cleanup:
> if (result != ISC_R_SUCCESS)
> --
> 1.7.11.4
>
--
Adam Tkac, Red Hat, Inc.
More information about the Freeipa-devel
mailing list