diff options
author | João Valverde <joao.valverde@tecnico.ulisboa.pt> | 2015-11-26 04:44:52 +0000 |
---|---|---|
committer | João Valverde <j@v6e.pt> | 2016-02-07 23:22:30 +0000 |
commit | 13ec77a9fc3af3b0b502820d0b55796c89997896 (patch) | |
tree | c5f5f72f090efd5471cf95095b00e13efa407959 /epan/wslua/wslua_tvb.c | |
parent | d762a895ab570680e4e72142a348ad2b07c97d4f (diff) | |
download | wireshark-13ec77a9fc3af3b0b502820d0b55796c89997896.tar.gz |
Add free_address_wmem() and other extensions to address API
Try to improve 'address' API (to be easier/safer) and also avoid
some constness warnings by not overloading the 'data' pointer to
store malloc'ed buffers (use private pointer for that instead).
Change-Id: I7456516b12c67620ceadac447907c12f5905bd49
Reviewed-on: https://code.wireshark.org/review/13463
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/wslua/wslua_tvb.c')
-rw-r--r-- | epan/wslua/wslua_tvb.c | 27 |
1 files changed, 7 insertions, 20 deletions
diff --git a/epan/wslua/wslua_tvb.c b/epan/wslua/wslua_tvb.c index 0a7e903498..b6c2d824da 100644 --- a/epan/wslua/wslua_tvb.c +++ b/epan/wslua/wslua_tvb.c @@ -751,7 +751,6 @@ WSLUA_METHOD TvbRange_ipv4(lua_State* L) { /* Get an IPv4 Address from a `TvbRange`, as an `Address` object. */ TvbRange tvbr = checkTvbRange(L,1); Address addr; - guint32* ip_addr; if ( !(tvbr && tvbr->tvb)) return 0; if (tvbr->tvb->expired) { @@ -764,12 +763,8 @@ WSLUA_METHOD TvbRange_ipv4(lua_State* L) { return 0; } - addr = (address *)g_malloc(sizeof(address)); - - ip_addr = (guint32 *)g_malloc(sizeof(guint32)); - *ip_addr = tvb_get_ipv4(tvbr->tvb->ws_tvb,tvbr->offset); - - set_address(addr, AT_IPv4, 4, ip_addr); + addr = g_new(address,1); + alloc_address_tvb(NULL,addr,AT_IPv4,sizeof(guint32),tvbr->tvb->ws_tvb,tvbr->offset); pushAddress(L,addr); WSLUA_RETURN(1); /* The IPv4 `Address` object. */ @@ -779,7 +774,7 @@ WSLUA_METHOD TvbRange_le_ipv4(lua_State* L) { /* Get an Little Endian IPv4 Address from a `TvbRange`, as an `Address` object. */ TvbRange tvbr = checkTvbRange(L,1); Address addr; - guint32* ip_addr; + guint32 ip_addr; if ( !(tvbr && tvbr->tvb)) return 0; if (tvbr->tvb->expired) { @@ -792,13 +787,9 @@ WSLUA_METHOD TvbRange_le_ipv4(lua_State* L) { return 0; } - addr = (address *)g_malloc(sizeof(address)); - - ip_addr = (guint32 *)g_malloc(sizeof(guint32)); - *ip_addr = tvb_get_ipv4(tvbr->tvb->ws_tvb,tvbr->offset); - *((guint32 *)ip_addr) = GUINT32_SWAP_LE_BE(*((guint32 *)ip_addr)); - - set_address(addr, AT_IPv4, 4, ip_addr); + addr = g_new(address,1); + ip_addr = GUINT32_SWAP_LE_BE(tvb_get_ipv4(tvbr->tvb->ws_tvb,tvbr->offset)); + alloc_address_wmem(NULL, addr, AT_IPv4, sizeof(ip_addr), &ip_addr); pushAddress(L,addr); WSLUA_RETURN(1); /* The IPv4 `Address` object. */ @@ -808,7 +799,6 @@ WSLUA_METHOD TvbRange_ether(lua_State* L) { /* Get an Ethernet Address from a `TvbRange`, as an `Address` object. */ TvbRange tvbr = checkTvbRange(L,1); Address addr; - guint8* buff; if ( !(tvbr && tvbr->tvb)) return 0; if (tvbr->tvb->expired) { @@ -822,10 +812,7 @@ WSLUA_METHOD TvbRange_ether(lua_State* L) { } addr = g_new(address,1); - - buff = (guint8 *)tvb_memdup(NULL,tvbr->tvb->ws_tvb,tvbr->offset,tvbr->len); - - set_address(addr, AT_ETHER, 6, buff); + alloc_address_tvb(NULL,addr,AT_ETHER,6,tvbr->tvb->ws_tvb,tvbr->offset); pushAddress(L,addr); WSLUA_RETURN(1); /* The Ethernet `Address` object. */ |