aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-cipmotion.c
diff options
context:
space:
mode:
authorD. Ulis <daulis0@gmail.com>2016-09-30 15:19:51 -0400
committerMichael Mann <mmann78@netscape.net>2016-09-30 21:26:39 +0000
commit0f18087ca32fa897dd3dfc04202bb40d3639364d (patch)
tree19dd73b62f6b82bd302c3db26332750690b06b46 /epan/dissectors/packet-cipmotion.c
parentcda23193bfa9f5b9b1753742ebffdaddd75a73c2 (diff)
CIP: Minor bug fixes
1. CIP: dissect_cip_set_attribute_list_req - Too many bytes highlighted. Could cause malformed packet 2. CIP: dissect_cip_cco_all_attribute_common - Too many bytes highlighted 3. CIP Motion: dissect_cntr_service - Wrong size passed in which tried to highlight too many bytes. Would cause malformed packet. 4. CIP: Some minor formatting/whitespace changes. Change-Id: I5899888a3e58452945c8546cf635768cdd3cf738 Reviewed-on: https://code.wireshark.org/review/18000 Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan/dissectors/packet-cipmotion.c')
-rw-r--r--epan/dissectors/packet-cipmotion.c58
1 files changed, 32 insertions, 26 deletions
diff --git a/epan/dissectors/packet-cipmotion.c b/epan/dissectors/packet-cipmotion.c
index fc6f7118ff..72ce5c0a70 100644
--- a/epan/dissectors/packet-cipmotion.c
+++ b/epan/dissectors/packet-cipmotion.c
@@ -1292,20 +1292,23 @@ dissect_cntr_service(tvbuff_t* tvb, proto_tree* tree, guint32 offset, guint32 si
proto_tree_add_item(header_tree, hf_cip_svc_code, tvb, offset + 1, 1, ENC_LITTLE_ENDIAN);
/* If the service is a set axis, get axis attribute or group sync request dissect it as well */
- switch(service)
+ if (size > 4)
{
- case SC_GET_AXIS_ATTRIBUTE_LIST:
- dissect_get_axis_attr_list_request(tvb, header_tree, offset + 4, size);
- break;
- case SC_SET_AXIS_ATTRIBUTE_LIST:
- dissect_set_axis_attr_list_request(tvb, header_tree, offset + 4, size);
- break;
- case SC_GROUP_SYNC:
- dissect_group_sync_request(tvb, header_tree, offset + 4, size);
- break;
- default:
- /* Display the remainder of the service channel data */
- proto_tree_add_item(header_tree, hf_cip_svc_data, tvb, offset + 4, size - 4, ENC_NA);
+ switch (service)
+ {
+ case SC_GET_AXIS_ATTRIBUTE_LIST:
+ dissect_get_axis_attr_list_request(tvb, header_tree, offset + 4, size - 4);
+ break;
+ case SC_SET_AXIS_ATTRIBUTE_LIST:
+ dissect_set_axis_attr_list_request(tvb, header_tree, offset + 4, size - 4);
+ break;
+ case SC_GROUP_SYNC:
+ dissect_group_sync_request(tvb, header_tree, offset + 4, size - 4);
+ break;
+ default:
+ /* Display the remainder of the service channel data */
+ proto_tree_add_item(header_tree, hf_cip_svc_data, tvb, offset + 4, size - 4, ENC_NA);
+ }
}
return offset + size;
@@ -1483,20 +1486,23 @@ dissect_devce_service(tvbuff_t* tvb, proto_tree* tree, guint32 offset, guint32 s
proto_tree_add_item(header_tree, hf_cip_svc_ext_status, tvb, offset + 3, 1, ENC_LITTLE_ENDIAN);
/* If the service is a set axis, get axis attribute response or group sync dissect it as well */
- switch(tvb_get_guint8(tvb, offset + 1))
+ if (size > 4)
{
- case SC_GET_AXIS_ATTRIBUTE_LIST:
- dissect_get_axis_attr_list_response(tvb, header_tree, offset + 4, size);
- break;
- case SC_SET_AXIS_ATTRIBUTE_LIST:
- dissect_set_axis_attr_list_response(tvb, header_tree, offset + 4, size);
- break;
- case SC_GROUP_SYNC:
- dissect_group_sync_response(tvb, header_tree, offset + 4, size);
- break;
- default:
- /* Display the remainder of the service channel data */
- proto_tree_add_item(header_tree, hf_cip_svc_data, tvb, offset + 4, size - 4, ENC_NA);
+ switch (tvb_get_guint8(tvb, offset + 1))
+ {
+ case SC_GET_AXIS_ATTRIBUTE_LIST:
+ dissect_get_axis_attr_list_response(tvb, header_tree, offset + 4, size - 4);
+ break;
+ case SC_SET_AXIS_ATTRIBUTE_LIST:
+ dissect_set_axis_attr_list_response(tvb, header_tree, offset + 4, size - 4);
+ break;
+ case SC_GROUP_SYNC:
+ dissect_group_sync_response(tvb, header_tree, offset + 4, size - 4);
+ break;
+ default:
+ /* Display the remainder of the service channel data */
+ proto_tree_add_item(header_tree, hf_cip_svc_data, tvb, offset + 4, size - 4, ENC_NA);
+ }
}
return offset + size;