From ca744729a424a788c8d69e141de89f283a673610 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Valverde?= Date: Mon, 29 Feb 2016 16:51:18 +0000 Subject: Clamp down on address data structure usage and AT_NONE semantics MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Catch errors like bug 12205 with an assertion. Change-Id: I17381c92dfb22912e53eb20f6436adfa15d67e71 Reviewed-on: https://code.wireshark.org/review/14251 Petri-Dish: João Valverde Tested-by: Petri Dish Buildbot Reviewed-by: João Valverde --- epan/address.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'epan/address.h') diff --git a/epan/address.h b/epan/address.h index 730acfb136..15f92f9d1b 100644 --- a/epan/address.h +++ b/epan/address.h @@ -133,16 +133,16 @@ set_address_tvb(address *addr, int addr_type, int addr_len, tvbuff_t *tvb, int o static inline void alloc_address_wmem(wmem_allocator_t *scope, address *addr, int addr_type, int addr_len, const void *addr_data) { - if (addr == NULL) - return; + g_assert(addr); + clear_address(addr); addr->type = addr_type; - addr->len = addr_len; - if (addr_type == AT_NONE || addr->len <= 0) { - addr->data = addr->priv = NULL; + if (addr_type == AT_NONE || addr_len <= 0 || addr_data == NULL) { + g_assert(addr_len <= 0); + g_assert(addr_data == NULL); return; } - addr->priv = wmem_memdup(scope, addr_data, addr->len); - addr->data = addr->priv; + addr->data = addr->priv = wmem_memdup(scope, addr_data, addr_len); + addr->len = addr_len; } /** Allocate an address from TVB data. -- cgit v1.2.1