diff options
author | João Valverde <j@v6e.pt> | 2016-02-08 00:43:56 +0000 |
---|---|---|
committer | João Valverde <j@v6e.pt> | 2016-02-08 00:44:22 +0000 |
commit | ef929dc8eb8c61d5829132d2da2a3061df44bba9 (patch) | |
tree | 6dc7fb0abec832c1b336580bfeaec70717f0a76f /epan/dissectors/packet-enip.c | |
parent | 8df2857bc1082797cc7052eb5a6ebb45ac92e4b9 (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.c | 23 |
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); } } } |