diff options
Diffstat (limited to 'epan/wslua/wslua_tvb.c')
-rw-r--r-- | epan/wslua/wslua_tvb.c | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/epan/wslua/wslua_tvb.c b/epan/wslua/wslua_tvb.c index b6c2d824da..0a7e903498 100644 --- a/epan/wslua/wslua_tvb.c +++ b/epan/wslua/wslua_tvb.c @@ -751,6 +751,7 @@ 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) { @@ -763,8 +764,12 @@ WSLUA_METHOD TvbRange_ipv4(lua_State* L) { return 0; } - addr = g_new(address,1); - alloc_address_tvb(NULL,addr,AT_IPv4,sizeof(guint32),tvbr->tvb->ws_tvb,tvbr->offset); + 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); pushAddress(L,addr); WSLUA_RETURN(1); /* The IPv4 `Address` object. */ @@ -774,7 +779,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) { @@ -787,9 +792,13 @@ WSLUA_METHOD TvbRange_le_ipv4(lua_State* L) { return 0; } - 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); + 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); pushAddress(L,addr); WSLUA_RETURN(1); /* The IPv4 `Address` object. */ @@ -799,6 +808,7 @@ 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) { @@ -812,7 +822,10 @@ WSLUA_METHOD TvbRange_ether(lua_State* L) { } addr = g_new(address,1); - alloc_address_tvb(NULL,addr,AT_ETHER,6,tvbr->tvb->ws_tvb,tvbr->offset); + + buff = (guint8 *)tvb_memdup(NULL,tvbr->tvb->ws_tvb,tvbr->offset,tvbr->len); + + set_address(addr, AT_ETHER, 6, buff); pushAddress(L,addr); WSLUA_RETURN(1); /* The Ethernet `Address` object. */ |