diff options
-rw-r--r-- | epan/dissectors/packet-atalk.c | 23 | ||||
-rw-r--r-- | epan/dissectors/packet-fddi.c | 14 | ||||
-rw-r--r-- | epan/dissectors/packet-ieee802154.c | 18 | ||||
-rw-r--r-- | epan/dissectors/packet-mausb.c | 4 | ||||
-rw-r--r-- | epan/dissectors/packet-sna.c | 12 | ||||
-rw-r--r-- | epan/dissectors/packet-tr.c | 2 | ||||
-rw-r--r-- | epan/dissectors/packet-usb.c | 13 | ||||
-rw-r--r-- | epan/dissectors/packet-usb.h | 3 |
8 files changed, 40 insertions, 49 deletions
diff --git a/epan/dissectors/packet-atalk.c b/epan/dissectors/packet-atalk.c index 1b030823a1..18234dd378 100644 --- a/epan/dissectors/packet-atalk.c +++ b/epan/dissectors/packet-atalk.c @@ -1437,7 +1437,8 @@ dissect_ddp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) e_ddp ddp; proto_tree *ddp_tree; proto_item *ti, *hidden_item; - static struct atalk_ddp_addr src, dst; /* has to be static due to SET_ADDRESS */ + struct atalk_ddp_addr *src = wmem_new(pinfo->pool, struct atalk_ddp_addr), + *dst = wmem_new(pinfo->pool, struct atalk_ddp_addr); tvbuff_t *new_tvb; col_set_str(pinfo->cinfo, COL_PROTOCOL, "DDP"); @@ -1449,14 +1450,14 @@ dissect_ddp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) ddp.sum=g_ntohs(ddp.sum); ddp.hops_len=g_ntohs(ddp.hops_len); - src.net = ddp.snet; - src.node = ddp.snode; - dst.net = ddp.dnet; - dst.node = ddp.dnode; - SET_ADDRESS(&pinfo->net_src, AT_ATALK, sizeof src, (guint8 *)&src); - SET_ADDRESS(&pinfo->src, AT_ATALK, sizeof src, (guint8 *)&src); - SET_ADDRESS(&pinfo->net_dst, AT_ATALK, sizeof dst, (guint8 *)&dst); - SET_ADDRESS(&pinfo->dst, AT_ATALK, sizeof dst, (guint8 *)&dst); + src->net = ddp.snet; + src->node = ddp.snode; + dst->net = ddp.dnet; + dst->node = ddp.dnode; + SET_ADDRESS(&pinfo->net_src, AT_ATALK, sizeof src, src); + SET_ADDRESS(&pinfo->src, AT_ATALK, sizeof src, src); + SET_ADDRESS(&pinfo->net_dst, AT_ATALK, sizeof dst, dst); + SET_ADDRESS(&pinfo->dst, AT_ATALK, sizeof dst, dst); pinfo->ptype = PT_DDP; pinfo->destport = ddp.dport; @@ -1471,11 +1472,11 @@ dissect_ddp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) ddp_tree = proto_item_add_subtree(ti, ett_ddp); hidden_item = proto_tree_add_string(ddp_tree, hf_ddp_src, tvb, - 4, 3, atalk_addr_to_str(&src)); + 4, 3, atalk_addr_to_str(src)); PROTO_ITEM_SET_HIDDEN(hidden_item); hidden_item = proto_tree_add_string(ddp_tree, hf_ddp_dst, tvb, - 6, 3, atalk_addr_to_str(&dst)); + 6, 3, atalk_addr_to_str(dst)); PROTO_ITEM_SET_HIDDEN(hidden_item); proto_tree_add_uint(ddp_tree, hf_ddp_hopcount, tvb, 0, 1, diff --git a/epan/dissectors/packet-fddi.c b/epan/dissectors/packet-fddi.c index 0ec6ffb303..279aec5649 100644 --- a/epan/dissectors/packet-fddi.c +++ b/epan/dissectors/packet-fddi.c @@ -315,7 +315,7 @@ dissect_fddi(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *ti, *hidden_item; const gchar *fc_str; proto_tree *fc_tree; - static guchar src[6], dst[6]; /* has to be static due to SET_ADDRESS */ + guchar *src = (guchar*)wmem_alloc(pinfo->pool, 6), *dst = (guchar*)wmem_alloc(pinfo->pool, 6); guchar src_swapped[6], dst_swapped[6]; tvbuff_t *next_tvb; static fddi_hdr fddihdrs[4]; @@ -370,9 +370,9 @@ dissect_fddi(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, /* XXX - copy them to some buffer associated with "pi", rather than just making "dst" static? */ - SET_ADDRESS(&pinfo->dl_dst, AT_ETHER, 6, &dst[0]); - SET_ADDRESS(&pinfo->dst, AT_ETHER, 6, &dst[0]); - SET_ADDRESS(&fddihdr->dst, AT_ETHER, 6, &dst[0]); + SET_ADDRESS(&pinfo->dl_dst, AT_ETHER, 6, dst); + SET_ADDRESS(&pinfo->dst, AT_ETHER, 6, dst); + SET_ADDRESS(&fddihdr->dst, AT_ETHER, 6, dst); if (fh_tree) { proto_tree_add_ether(fh_tree, hf_fddi_dst, tvb, FDDI_P_DHOST + FDDI_PADDING, 6, dst); @@ -395,9 +395,9 @@ dissect_fddi(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, /* XXX - copy them to some buffer associated with "pi", rather than just making "src" static? */ - SET_ADDRESS(&pinfo->dl_src, AT_ETHER, 6, &src[0]); - SET_ADDRESS(&pinfo->src, AT_ETHER, 6, &src[0]); - SET_ADDRESS(&fddihdr->src, AT_ETHER, 6, &src[0]); + SET_ADDRESS(&pinfo->dl_src, AT_ETHER, 6, src); + SET_ADDRESS(&pinfo->src, AT_ETHER, 6, src); + SET_ADDRESS(&fddihdr->src, AT_ETHER, 6, src); if (fh_tree) { proto_tree_add_ether(fh_tree, hf_fddi_src, tvb, FDDI_P_SHOST + FDDI_PADDING, 6, src); diff --git a/epan/dissectors/packet-ieee802154.c b/epan/dissectors/packet-ieee802154.c index 742bfa5fa6..3056740464 100644 --- a/epan/dissectors/packet-ieee802154.c +++ b/epan/dissectors/packet-ieee802154.c @@ -728,21 +728,16 @@ dissect_ieee802154_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g offset += 2; } else if (packet->dst_addr_mode == IEEE802154_FCF_ADDR_EXT) { - static guint64 addr; /* has to be static due to SET_ADDRESS */ - /* Get the address */ packet->dst64 = tvb_get_letoh64(tvb, offset); - /* Copy and convert the address to network byte order. */ - addr = pntoh64(&(packet->dst64)); - /* Display the destination address. */ /* XXX - OUI resolution doesn't happen when displaying resolved * EUI64 addresses; that should probably be fixed in * epan/addr_resolv.c. */ - SET_ADDRESS(&pinfo->dl_dst, AT_EUI64, 8, &addr); - SET_ADDRESS(&pinfo->dst, AT_EUI64, 8, &addr); + TVB_SET_ADDRESS(&pinfo->dl_dst, AT_EUI64, tvb, offset, 8); + TVB_SET_ADDRESS(&pinfo->dst, AT_EUI64, tvb, offset, 8); if (tree) { proto_tree_add_item(ieee802154_tree, hf_ieee802154_dst64, tvb, offset, 8, ENC_LITTLE_ENDIAN); proto_item_append_text(proto_root, ", Dst: %s", ep_eui64_to_display(packet->dst64)); @@ -841,21 +836,16 @@ dissect_ieee802154_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g offset += 2; } else if (packet->src_addr_mode == IEEE802154_FCF_ADDR_EXT) { - static guint64 addr; /* has to be static due to SET_ADDRESS */ - /* Get the address. */ packet->src64 = tvb_get_letoh64(tvb, offset); - /* Copy and convert the address to network byte order. */ - addr = pntoh64(&(packet->src64)); - /* Display the source address. */ /* XXX - OUI resolution doesn't happen when displaying resolved * EUI64 addresses; that should probably be fixed in * epan/addr_resolv.c. */ - SET_ADDRESS(&pinfo->dl_src, AT_EUI64, 8, &addr); - SET_ADDRESS(&pinfo->src, AT_EUI64, 8, &addr); + TVB_SET_ADDRESS(&pinfo->dl_src, AT_EUI64, tvb, offset, 8); + TVB_SET_ADDRESS(&pinfo->src, AT_EUI64, tvb, offset, 8); if (tree) { proto_tree_add_item(ieee802154_tree, hf_ieee802154_src64, tvb, offset, 8, ENC_LITTLE_ENDIAN); proto_item_append_text(proto_root, ", Src: %s", ep_eui64_to_display(packet->src64)); diff --git a/epan/dissectors/packet-mausb.c b/epan/dissectors/packet-mausb.c index 1f128f4fa1..35fd890149 100644 --- a/epan/dissectors/packet-mausb.c +++ b/epan/dissectors/packet-mausb.c @@ -1117,7 +1117,6 @@ static conversation_t gboolean is_data, gboolean req) { conversation_t *conversation = NULL; - static usb_address_t src_addr, dst_addr; /* has to be static due to SET_ADDRESS */ guint16 device_address; guint16 bus_num; int endpoint; @@ -1128,8 +1127,7 @@ static conversation_t endpoint = mausb_ep_handle_ep_num(handle); bus_num = mausb_ep_handle_bus_num(handle); - usb_set_addr(pinfo, &src_addr, &dst_addr, bus_num, device_address, - endpoint, req); + usb_set_addr(pinfo, bus_num, device_address, endpoint, req); conversation = get_usb_conversation(pinfo, &pinfo->src, &pinfo->dst, pinfo->srcport, pinfo->destport); } diff --git a/epan/dissectors/packet-sna.c b/epan/dissectors/packet-sna.c index 5d054adc4b..09ba02c6e6 100644 --- a/epan/dissectors/packet-sna.c +++ b/epan/dissectors/packet-sna.c @@ -1843,7 +1843,7 @@ dissect_fid4(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) NULL }; - static struct sna_fid_type_4_addr src, dst; /* has to be static due to SET_ADDRESS */ + struct sna_fid_type_4_addr *src, *dst; const int bytes_in_header = 26; @@ -1915,8 +1915,9 @@ dissect_fid4(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) proto_tree_add_uint(tree, hf_sna_th_def, tvb, offset, 2, def); /* Addresses in FID 4 are discontiguous, sigh */ - dst.saf = dsaf; - dst.ef = def; + dst = wmem_new(pinfo->pool, struct sna_fid_type_4_addr); + dst->saf = dsaf; + dst->ef = def; SET_ADDRESS(&pinfo->net_dst, AT_SNA, SNA_FID_TYPE_4_ADDR_LEN, (guint8* )&dst); SET_ADDRESS(&pinfo->dst, AT_SNA, SNA_FID_TYPE_4_ADDR_LEN, @@ -1926,8 +1927,9 @@ dissect_fid4(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) proto_tree_add_uint(tree, hf_sna_th_oef, tvb, offset+2, 2, oef); /* Addresses in FID 4 are discontiguous, sigh */ - src.saf = osaf; - src.ef = oef; + src = wmem_new(pinfo->pool, struct sna_fid_type_4_addr); + src->saf = osaf; + src->ef = oef; SET_ADDRESS(&pinfo->net_src, AT_SNA, SNA_FID_TYPE_4_ADDR_LEN, (guint8 *)&src); SET_ADDRESS(&pinfo->src, AT_SNA, SNA_FID_TYPE_4_ADDR_LEN, diff --git a/epan/dissectors/packet-tr.c b/epan/dissectors/packet-tr.c index 31e4b01769..8da242fb16 100644 --- a/epan/dissectors/packet-tr.c +++ b/epan/dissectors/packet-tr.c @@ -398,7 +398,7 @@ dissect_tr(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) tr_hdr *volatile trh; /* non-source-routed version of source addr */ - static guint8 trn_shost_nonsr[6]; /* has to be static due to SET_ADDRESS */ + guint8 *trn_shost_nonsr = (guint8*)wmem_alloc(pinfo->pool, 6); int x; /* Token-Ring Strings */ diff --git a/epan/dissectors/packet-usb.c b/epan/dissectors/packet-usb.c index c6f13298d7..44988c0aba 100644 --- a/epan/dissectors/packet-usb.c +++ b/epan/dissectors/packet-usb.c @@ -2740,9 +2740,9 @@ try_dissect_next_protocol(proto_tree *tree, tvbuff_t *next_tvb, packet_info *pin usb_conv_info->usb_trans_info = usb_trans_info; } else if (ctrl_recip == RQT_SETUP_RECIPIENT_ENDPOINT) { - static address endpoint_addr; + address endpoint_addr; gint endpoint; - static usb_address_t src_addr, dst_addr; /* has to be static due to SET_ADDRESS */ + usb_address_t src_addr, dst_addr; guint32 src_endpoint, dst_endpoint; conversation_t *conversation; @@ -3106,10 +3106,12 @@ dissect_usbpcap_buffer_packet_header(tvbuff_t *tvb, packet_info *pinfo, proto_tr /* Set the usb_address_t fields based on the direction of the urb */ void -usb_set_addr(packet_info *pinfo, usb_address_t *src_addr, - usb_address_t *dst_addr, guint16 bus_id, guint16 device_address, +usb_set_addr(packet_info *pinfo, guint16 bus_id, guint16 device_address, int endpoint, gboolean req) { + usb_address_t *src_addr = wmem_new(pinfo->pool, usb_address_t), + *dst_addr = wmem_new(pinfo->pool, usb_address_t); + if (req) { /* request */ src_addr->device = 0xffffffff; @@ -3404,7 +3406,6 @@ dissect_usb_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent, proto_item *urb_tree_ti; proto_tree *tree; proto_item *item; - static usb_address_t src_addr, dst_addr; /* has to be static due to SET_ADDRESS */ usb_conv_info_t *usb_conv_info; conversation_t *conversation; guint16 device_address; @@ -3438,7 +3439,7 @@ dissect_usb_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent, else return; /* invalid USB pseudo header */ - usb_set_addr(pinfo, &src_addr, &dst_addr, bus_id, device_address, endpoint, + usb_set_addr(pinfo, bus_id, device_address, endpoint, (urb_type == URB_SUBMIT)); conversation = get_usb_conversation(pinfo, &pinfo->src, &pinfo->dst, pinfo->srcport, pinfo->destport); diff --git a/epan/dissectors/packet-usb.h b/epan/dissectors/packet-usb.h index 5161ea376f..1e07dfce14 100644 --- a/epan/dissectors/packet-usb.h +++ b/epan/dissectors/packet-usb.h @@ -239,8 +239,7 @@ dissect_usb_setup_request(packet_info *pinfo, proto_tree *tree, void -usb_set_addr(packet_info *pinfo, usb_address_t *src_addr, - usb_address_t *dst_addr, guint16 bus_id, guint16 device_address, +usb_set_addr(packet_info *pinfo, guint16 bus_id, guint16 device_address, int endpoint, gboolean req); usb_trans_info_t |