summaryrefslogtreecommitdiff
path: root/epan/address.h
diff options
context:
space:
mode:
authorJoão Valverde <joao.valverde@tecnico.ulisboa.pt>2016-02-29 16:51:18 +0000
committerJoão Valverde <j@v6e.pt>2016-03-18 00:58:48 +0000
commitca744729a424a788c8d69e141de89f283a673610 (patch)
treed6589d9430ab3dc66fc4df5fbcdf8fb220ad636a /epan/address.h
parent0ebb4912f931eba3a1a23559a1d332fca1b7de95 (diff)
downloadwireshark-ca744729a424a788c8d69e141de89f283a673610.tar.gz
Clamp down on address data structure usage and AT_NONE semantics
Catch errors like bug 12205 with an assertion. Change-Id: I17381c92dfb22912e53eb20f6436adfa15d67e71 Reviewed-on: https://code.wireshark.org/review/14251 Petri-Dish: João Valverde <j@v6e.pt> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: João Valverde <j@v6e.pt>
Diffstat (limited to 'epan/address.h')
-rw-r--r--epan/address.h14
1 files changed, 7 insertions, 7 deletions
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.