aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Morriss <jeff.morriss@ulticom.com>2012-02-08 03:18:04 +0000
committerJeff Morriss <jeff.morriss@ulticom.com>2012-02-08 03:18:04 +0000
commit2d3220dcb55f66c66f987cfc3da2d3a125f37f94 (patch)
tree2290a0919dd172e9d4a3b24b81bbc3d0a4b163fc
parentd51510c1a3e64cc979e6f24410d24e9b2c48b35a (diff)
Heuristic standard detection:
- Grab optional parameters for LUDT/LUDTS - Fix processing of the 2-octet pointers svn path=/trunk/; revision=40923
-rw-r--r--epan/dissectors/packet-sccp.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/epan/dissectors/packet-sccp.c b/epan/dissectors/packet-sccp.c
index a07fc9395b..ba37d39acd 100644
--- a/epan/dissectors/packet-sccp.c
+++ b/epan/dissectors/packet-sccp.c
@@ -1000,6 +1000,18 @@ looks_like_valid_sccp(guint32 frame_num _U_, tvbuff_t *tvb, guint8 my_mtp3_stand
if (msgtype == SCCP_MSG_TYPE_XUDT || msgtype == SCCP_MSG_TYPE_XUDTS) {
opt_ptr = tvb_get_guint8(tvb, offset);
offset += POINTER_LENGTH;
+ } else if (msgtype == SCCP_MSG_TYPE_LUDT || msgtype == SCCP_MSG_TYPE_LUDTS) {
+ opt_ptr = tvb_get_letohs(tvb, offset);
+ offset += POINTER_LENGTH_LONG;
+ }
+
+ if (msgtype == SCCP_MSG_TYPE_LUDT || msgtype == SCCP_MSG_TYPE_LUDTS) {
+ /* Long pointers count from the 2nd (MSB) octet of the pointer */
+ called_ptr += 1;
+ calling_ptr += 1;
+ data_ptr += 1;
+ if (opt_ptr)
+ opt_ptr += 1;
}
/* Check that the variable pointers are within bounds */