aboutsummaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/profinet/packet-dcerpc-pn-io.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/plugins/profinet/packet-dcerpc-pn-io.c b/plugins/profinet/packet-dcerpc-pn-io.c
index 6252d86c30..931393773d 100644
--- a/plugins/profinet/packet-dcerpc-pn-io.c
+++ b/plugins/profinet/packet-dcerpc-pn-io.c
@@ -8210,6 +8210,7 @@ dissect_ARBlockReq_block(tvbuff_t *tvb, int offset,
{
guint16 u16ARType;
guint32 u32ARProperties;
+ gboolean have_aruuid = FALSE;
e_guid_t aruuid;
e_guid_t uuid;
guint16 u16SessionKey;
@@ -8302,6 +8303,7 @@ dissect_ARBlockReq_block(tvbuff_t *tvb, int offset,
{
offset = dissect_dcerpc_uuid_t(tvb, offset, pinfo, tree, drep,
hf_pn_io_ar_uuid, &aruuid);
+ have_aruuid = TRUE;
}
offset = dissect_dcerpc_uint16(tvb, offset, pinfo, tree, drep,
hf_pn_io_sessionkey, &u16SessionKey);
@@ -8333,16 +8335,20 @@ dissect_ARBlockReq_block(tvbuff_t *tvb, int offset,
u16UDPRTPort,
pStationName);
- par = pnio_ar_find_by_aruuid(pinfo, &aruuid);
- if (par == NULL) {
- par = pnio_ar_new(&aruuid);
- memcpy( (void *) (&par->controllermac), mac, sizeof(par->controllermac));
- par->arType = u16ARType; /* store AR-type for filter generation */
- /*strncpy( (char *) (&par->controllername), pStationName, sizeof(par->controllername));*/
+ if (have_aruuid) {
+ par = pnio_ar_find_by_aruuid(pinfo, &aruuid);
+ if (par == NULL) {
+ par = pnio_ar_new(&aruuid);
+ memcpy( (void *) (&par->controllermac), mac, sizeof(par->controllermac));
+ par->arType = u16ARType; /* store AR-type for filter generation */
+ /*strncpy( (char *) (&par->controllername), pStationName, sizeof(par->controllername));*/
+ } else {
+ /*expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, "ARBlockReq: AR already existing!");*/
+ }
+ *ar = par;
} else {
- /*expert_add_info_format(pinfo, item, PI_UNDECODED, PI_WARN, "ARBlockReq: AR already existing!");*/
+ *ar = NULL;
}
- *ar = par;
return offset;
}