aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-enip.c
diff options
context:
space:
mode:
authorJoão Valverde <j@v6e.pt>2016-02-08 00:43:56 +0000
committerJoão Valverde <j@v6e.pt>2016-02-08 00:44:22 +0000
commitef929dc8eb8c61d5829132d2da2a3061df44bba9 (patch)
tree6dc7fb0abec832c1b336580bfeaec70717f0a76f /epan/dissectors/packet-enip.c
parent8df2857bc1082797cc7052eb5a6ebb45ac92e4b9 (diff)
Revert "Add free_address_wmem() and other extensions to address API"
This reverts commit 13ec77a9fc3af3b0b502820d0b55796c89997896. This commit introduces a segmentation fault for Lua code (uncovered by the test suite). Change-Id: Ibc273d1915cda9632697b9f138f0ae104d3fb65e Reviewed-on: https://code.wireshark.org/review/13813 Reviewed-by: João Valverde <j@v6e.pt>
Diffstat (limited to 'epan/dissectors/packet-enip.c')
-rw-r--r--epan/dissectors/packet-enip.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/epan/dissectors/packet-enip.c b/epan/dissectors/packet-enip.c
index 2f09eccde9..fb8fb8302a 100644
--- a/epan/dissectors/packet-enip.c
+++ b/epan/dissectors/packet-enip.c
@@ -1113,14 +1113,14 @@ enip_open_cip_connection( packet_info *pinfo, cip_conn_info_t* connInfo)
((connInfo->O2T.ipaddress.type == AT_IPv4) && ((*(const guint32*)connInfo->O2T.ipaddress.data)) == 0) ||
((connInfo->O2T.ipaddress.type == AT_IPv6) && (memcmp(connInfo->O2T.ipaddress.data, &ipv6_zero, sizeof(ipv6_zero)) == 0)) ||
(connInfo->O2T.type != CONN_TYPE_MULTICAST))
- copy_address_shallow(&connInfo->O2T.ipaddress, &pinfo->src);
+ connInfo->O2T.ipaddress = pinfo->src;
if ((connInfo->T2O.port == 0) || (connInfo->T2O.type == CONN_TYPE_MULTICAST))
connInfo->T2O.port = ENIP_IO_PORT;
if ((connInfo->T2O.ipaddress.type == AT_NONE) ||
((connInfo->T2O.ipaddress.type == AT_IPv4) && ((*(const guint32*)connInfo->T2O.ipaddress.data)) == 0) ||
((connInfo->T2O.ipaddress.type == AT_IPv6) && (memcmp(connInfo->T2O.ipaddress.data, &ipv6_zero, sizeof(ipv6_zero)) == 0)) ||
(connInfo->T2O.type != CONN_TYPE_MULTICAST))
- copy_address_shallow(&connInfo->T2O.ipaddress, &pinfo->dst);
+ connInfo->T2O.ipaddress = pinfo->dst;
if (connInfo->O2T.ipaddress.type == AT_IPv6)
{
@@ -2576,17 +2576,24 @@ dissect_cpf(enip_request_key_t *request_key, int command, tvbuff_t *tvb,
request_info = (enip_request_info_t *)p_get_proto_data(wmem_file_scope(), pinfo, proto_enip, ENIP_REQUEST_INFO);
if (request_info != NULL)
{
+ guint16 port;
+ guint32 *datap;
+
+ port = tvb_get_ntohs(tvb, offset+8);
+ datap = (guint32 *)wmem_alloc(wmem_file_scope(), sizeof(guint32));
+ *datap = tvb_get_ipv4(tvb, offset+10);
+
if (item == SOCK_ADR_INFO_OT)
{
- request_info->cip_info->connInfo->O2T.port = tvb_get_ntohs(tvb, offset+8);
- alloc_address_tvb(wmem_file_scope(), &request_info->cip_info->connInfo->O2T.ipaddress,
- AT_IPv4, sizeof(guint32), tvb, offset+10);
+ request_info->cip_info->connInfo->O2T.port = port;
+ set_address(&request_info->cip_info->connInfo->O2T.ipaddress,
+ AT_IPv4, sizeof(guint32), datap);
}
else
{
- request_info->cip_info->connInfo->T2O.port = tvb_get_ntohs(tvb, offset+8);
- alloc_address_tvb(wmem_file_scope(), &request_info->cip_info->connInfo->T2O.ipaddress,
- AT_IPv4, sizeof(guint32), tvb, offset+10);
+ request_info->cip_info->connInfo->T2O.port = port;
+ set_address(&request_info->cip_info->connInfo->T2O.ipaddress,
+ AT_IPv4, sizeof(guint32), datap);
}
}
}