[Freeipa-devel] [PATCH 0095] Use memory allocation macros more extensively - part 2

Adam Tkac atkac at redhat.com
Thu Nov 22 12:30:31 UTC 2012


On Tue, Nov 20, 2012 at 12:50:12PM +0100, Petr Spacek wrote:
> Hello,
> 
> this patch replaces all remaining occurrences of direct isc_mem_*
> calls  with macros.
> The only exception is destroy_ldap_connection() which will be
> handled in separate patch - current deallocation code is probably
> not safe.
> 
> Commit message:
>     Use memory allocation macros more extensively - part 2.
> 
>     Some scattered occurences of isc_mem_* functions was replaced by macros.
> 
>     String functions from str.c are still calling isc_mem_directly.

Ack

> From 9f44b8a965373f26c74100c84f7580d224355c3e Mon Sep 17 00:00:00 2001
> From: Petr Spacek <pspacek at redhat.com>
> Date: Tue, 20 Nov 2012 12:39:49 +0100
> Subject: [PATCH] Use memory allocation macros more extensively - part 2.
> 
> Some scattered occurrences of isc_mem_* functions was replaced by macros.
> 
> String functions from str.c are still calling isc_mem_directly.
> 
> Signed-off-by: Petr Spacek <pspacek at redhat.com>
> ---
>  src/acl.c           |  6 +-----
>  src/ldap_driver.c   |  2 +-
>  src/ldap_entry.c    |  6 +++---
>  src/ldap_helper.c   | 33 ++++++++++-----------------------
>  src/zone_manager.c  |  2 +-
>  src/zone_register.c |  2 +-
>  6 files changed, 17 insertions(+), 34 deletions(-)
> 
> diff --git a/src/acl.c b/src/acl.c
> index a490affaded51b48f0406a5d5a7d0fa51f625d80..c62a8cb9e867b658b65ce05a07fc31377b2356c2 100644
> --- a/src/acl.c
> +++ b/src/acl.c
> @@ -553,11 +553,7 @@ acl_parse_forwarder(const char *forwarder_str, isc_mem_t *mctx, isc_sockaddr_t *
>  	}
>  
>  	const cfg_obj_t *forwarder = cfg_listelt_value(element);
> -	*sa = isc_mem_get(mctx, sizeof(isc_sockaddr_t));
> -	if (*sa == NULL) {
> -		result = ISC_R_NOMEMORY;
> -		goto cleanup;
> -	}
> +	CHECKED_MEM_GET_PTR(mctx, *sa);
>  	**sa = *cfg_obj_assockaddr(forwarder);
>  	if (isc_sockaddr_getport(*sa) == 0)
>  		isc_sockaddr_setport(*sa, port);
> diff --git a/src/ldap_driver.c b/src/ldap_driver.c
> index 99a8421105f91a6c98d0e15d2c5962701974e380..cde09ee8aa3c9332f3766a031030a95b0cff3229 100644
> --- a/src/ldap_driver.c
> +++ b/src/ldap_driver.c
> @@ -221,7 +221,7 @@ clone_rdatalist_to_rdataset(isc_mem_t *mctx, dns_rdatalist_t *rdlist,
>  cleanup:
>  	if (new_rdlist != NULL) {
>  		free_rdatalist(mctx, rdlist);
> -		isc_mem_put(mctx, new_rdlist, sizeof(*new_rdlist));
> +		SAFE_MEM_PUT_PTR(mctx, new_rdlist);
>  	}
>  
>  	return result;
> diff --git a/src/ldap_entry.c b/src/ldap_entry.c
> index 1e165ca696ccafa177f17b97bda08ed9cc344c7d..9436b895913b2eb1a711d9343e43e695ea7e6ae4 100644
> --- a/src/ldap_entry.c
> +++ b/src/ldap_entry.c
> @@ -120,7 +120,7 @@ ldap_valuelist_destroy(isc_mem_t *mctx, ldap_valuelist_t *values)
>  	while (value != NULL) {
>  		next = NEXT(value, link);
>  		UNLINK(*values, value, link);
> -		isc_mem_put(mctx, value, sizeof(*value));
> +		SAFE_MEM_PUT_PTR(mctx, value);
>  		value = next;
>  	}
>  }
> @@ -137,7 +137,7 @@ ldap_attributelist_destroy(isc_mem_t *mctx, ldap_attributelist_t *attrlist)
>  		ldap_valuelist_destroy(mctx, &attr->values);
>                  ldap_value_free(attr->ldap_values);
>                  ldap_memfree(attr->name);
> -                isc_mem_put(mctx, attr, sizeof(*attr));
> +                SAFE_MEM_PUT_PTR(mctx, attr);
>                  attr = next;
>          }
>  }
> @@ -242,7 +242,7 @@ ldap_entry_destroy(isc_mem_t *mctx, ldap_entry_t **entryp)
>  	ldap_attributelist_destroy(mctx, &entry->attrs);
>  	if (entry->dn != NULL)
>  		ldap_memfree(entry->dn);
> -	isc_mem_put(mctx, entry, sizeof(*entry));
> +	SAFE_MEM_PUT_PTR(mctx, entry);
>  
>  	*entryp = NULL;
>  }
> diff --git a/src/ldap_helper.c b/src/ldap_helper.c
> index 904bae5259cccd9ce5cfd27deead3a0d23864f84..84ac06be7c7d4451e59844dd7c447f0f3d557f61 100644
> --- a/src/ldap_helper.c
> +++ b/src/ldap_helper.c
> @@ -670,10 +670,10 @@ destroy_ldap_instance(ldap_instance_t **ldap_instp)
>  	while (!ISC_LIST_EMPTY(ldap_inst->orig_global_forwarders.addrs)) {
>  		addr = ISC_LIST_HEAD(ldap_inst->orig_global_forwarders.addrs);
>  		ISC_LIST_UNLINK(ldap_inst->orig_global_forwarders.addrs, addr, link);
> -		isc_mem_put(ldap_inst->mctx, addr, sizeof(isc_sockaddr_t));
> +		SAFE_MEM_PUT_PTR(ldap_inst->mctx, addr);
>  	}
>  
> -	isc_mem_putanddetach(&ldap_inst->mctx, ldap_inst, sizeof(ldap_instance_t));
> +	MEM_PUT_AND_DETACH(ldap_inst);
>  
>  	*ldap_instp = NULL;
>  	log_debug(1, "LDAP instance '%s' destroyed", db_name);
> @@ -693,7 +693,7 @@ new_ldap_connection(ldap_pool_t *pool, ldap_connection_t **ldap_connp)
>  
>  	result = isc_mutex_init(&ldap_conn->lock);
>  	if (result != ISC_R_SUCCESS) {
> -		isc_mem_put(pool->mctx, ldap_conn, sizeof(ldap_connection_t));
> +		SAFE_MEM_PUT_PTR(pool->mctx, ldap_conn);
>  		return result;
>  	}
>  
> @@ -1135,7 +1135,7 @@ cleanup:
>  			isc_sockaddr_t *addr = NULL;
>  			addr = ISC_LIST_HEAD(addrs);
>  			ISC_LIST_UNLINK(addrs, addr, link);
> -			isc_mem_put(inst->mctx, addr, sizeof(*addr));
> +			SAFE_MEM_PUT_PTR(inst->mctx, addr);
>  		}
>  	}
>  	if (fwdtbl_deletion_requested) {
> @@ -1654,7 +1654,7 @@ ldapdb_rdatalist_destroy(isc_mem_t *mctx, ldapdb_rdatalist_t *rdatalist)
>  		rdlist = HEAD(*rdatalist);
>  		free_rdatalist(mctx, rdlist);
>  		UNLINK(*rdatalist, rdlist, link);
> -		isc_mem_put(mctx, rdlist, sizeof(*rdlist));
> +		SAFE_MEM_PUT_PTR(mctx, rdlist);
>  	}
>  }
>  
> @@ -1671,7 +1671,7 @@ free_rdatalist(isc_mem_t *mctx, dns_rdatalist_t *rdlist)
>  		UNLINK(rdlist->rdata, rdata, link);
>  		dns_rdata_toregion(rdata, &r);
>  		isc_mem_put(mctx, r.base, r.length);
> -		isc_mem_put(mctx, rdata, sizeof(*rdata));
> +		SAFE_MEM_PUT_PTR(mctx, rdata);
>  	}
>  }
>  
> @@ -1931,8 +1931,7 @@ parse_rdata(isc_mem_t *mctx, ldap_qresult_t *qresult,
>  
>  cleanup:
>  	isc_lex_close(qresult->lex);
> -	if (rdata != NULL)
> -		isc_mem_put(mctx, rdata, sizeof(*rdata));
> +	SAFE_MEM_PUT_PTR(mctx, rdata);
>  	if (rdatamem.base != NULL)
>  		isc_mem_put(mctx, rdatamem.base, rdatamem.length);
>  
> @@ -3589,23 +3588,11 @@ psearch_update(ldap_instance_t *inst, ldap_entry_t *entry, LDAPControl **ctrls)
>  
>  	isc_mem_attach(inst->mctx, &mctx);
>  
> -	dn = isc_mem_strdup(mctx, entry->dn);
> -	if (dn == NULL) {
> -		result = ISC_R_NOMEMORY;
> -		goto cleanup;
> -	}
> -	dbname = isc_mem_strdup(mctx, inst->db_name);
> -	if (dbname == NULL) {
> -		result = ISC_R_NOMEMORY;
> -		goto cleanup;
> -	}
> +	CHECKED_MEM_STRDUP(mctx, entry->dn, dn);
> +	CHECKED_MEM_STRDUP(mctx, inst->db_name, dbname);
>  
>  	if (PSEARCH_MODDN(chgtype)) {
> -		prevdn = isc_mem_strdup(mctx, prevdn_ldap);
> -		if (prevdn == NULL) {
> -			result = ISC_R_NOMEMORY;
> -			goto cleanup;
> -		}
> +		CHECKED_MEM_STRDUP(mctx, prevdn_ldap, prevdn);
>  	}
>  
>  	/*
> diff --git a/src/zone_manager.c b/src/zone_manager.c
> index ca3edd010e5f6ea94adb57e5ae5e915a834e52a0..2988cfd0598de57efbc4f7a42447ad1dadce6d65 100644
> --- a/src/zone_manager.c
> +++ b/src/zone_manager.c
> @@ -98,7 +98,7 @@ destroy_db_instance(db_instance_t **db_instp)
>  	if (db_inst->name != NULL)
>  		isc_mem_free(db_inst->mctx, db_inst->name);
>  
> -	isc_mem_putanddetach(&db_inst->mctx, db_inst, sizeof(*db_inst));
> +	MEM_PUT_AND_DETACH(db_inst);
>  
>  	*db_instp = NULL;
>  }
> diff --git a/src/zone_register.c b/src/zone_register.c
> index 76305730b2e19686568f8a1bc6ac703ed3898fcc..18438bf937a6482ddf058adbecdc21e7cf2e7f26 100644
> --- a/src/zone_register.c
> +++ b/src/zone_register.c
> @@ -167,7 +167,7 @@ delete_zone_info(void *arg1, void *arg2)
>  
>  	isc_mem_free(mctx, zinfo->dn);
>  	dns_zone_detach(&zinfo->zone);
> -	isc_mem_put(mctx, zinfo, sizeof(*zinfo));
> +	SAFE_MEM_PUT_PTR(mctx, zinfo);
>  }
>  
>  /*
> -- 
> 1.7.11.7
> 


-- 
Adam Tkac, Red Hat, Inc.




More information about the Freeipa-devel mailing list